资源简介
C++版空间后方交会代码,提供3种实现形式,并附有实验报告

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include “MatrixOperation.h“
#include “CResection.h“
//Download by http://www.codefans.net
#define MAXITERATION 10
#define PI 3.1415926
using namespace std;
CResection::~CResection()
{
}
CResection::CResection()
{
bDone = false;
}
CResection::CResection(double PhotographicScale double focus char* filePathName)
{
bDone = false;
m = PhotographicScale;
f = focus;
dotNum = 0;
sd.empty();
memcpy(filenamefilePathNameMAX_PATH);
InitData();
Iterator();
}
void CResection::InitData()
{
//打开文件以备读取数据
// cout <<“开始读取数据...“< ifstream datafile1(filenameios::in | ios::nocreate);
if( !datafile1)
{
// cout<<“打开文件失败 文件可能不存在“< // system(“pause“);
_exit(1);
}
int i; //文本文件行数,即已知点个数
string temp;
while(getline(datafile1 temp))
dotNum ++; //统计行数
datafile1.close();
ifstream datafile2(filenameios::in | ios::nocreate);
SourceData sdtemp;
for (i = 0; i != dotNum; i ++)
{
datafile2 >> sdtemp.x >> sdtemp.y >> sdtemp.X >> sdtemp.Y >> sdtemp.Z;
sd.push_back(sdtemp);
}
datafile2.close();
// cout <<“读取数据完毕...“< }
bool CResection::CheckPrecision(double* deta)
{
//2.9088820866572159615394846141477e-5 即 0.1′的弧度表示
bool ret;
ret = (fabs(deta[0])<0.000001 && fabs(deta[1])<0.000001 && fabs(deta[2])<0.000001 && \
fabs(deta[3])<2.90888208656e-5 && fabs(deta[4])<2.90888208656e-5 && \
fabs(deta[5])<2.90888208656e-5);
return ret;
}
void CResection::Iterator()
{
double phi omega kappa Xs Ys Zs;
phi = omega = kappa =0.0;
Xs = Ys = Zs = 0.0;
for (int k=0;k {
sd[k].x /= 1000.0;
sd[k].y /= 1000.0;
Xs += sd[k].X;
Ys += sd[k].Y;
}
Xs /= dotNum;
Ys /= dotNum;
f = f / 1000.0;
Zs =m*f;
// cout< // cout <<“Xs: “< // cout <<“phi: “<
//声明并初始化六元素改正数矩阵
double deta[6] = {111111};
double x0(0);
double y0(0);//内方位元素
double *X0 *Y0 *Z0;
X0 = new double[dotNum];
Y0 = new double[dotNum];
Z0 = new double[dotNum];
memset(X00dotNum*sizeof(double));
memset(Y00dotNum*sizeof(double));
memset(Z00dotNum*sizeof(double));
double A[2*6] = {0.0};
double AT[6*2] = {0.0};
double Buf1[36] = {0.0};
double Buf2[36] = {0.0};//ATA累加
double Buf3[6] = {0.0};
double Buf4[6] = {0.0};//ATL累加
double Buf5[8*6] = {0.0};//存储8×6的A矩阵,没办法
double Buf6[8*1] = {0.0};//存储8×1的L矩阵,同上
double V[8*1] = {0.0};
double ATA[36] = {0.0};
double ATL[6] = {0.0};
double L[2] = {0.0};
int iCount = 0;//迭代次数
// cout << “开始迭代计算...“< while(!CheckPrecision(deta))
{
// cout <
if (iCount == MAXITERATION)
{
// cout <<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9236 2012-03-02 10:20 xnrg.net\空间后方交会的3种实现形式\CResection\CResection.cpp
文件 4532 2010-10-26 10:49 xnrg.net\空间后方交会的3种实现形式\CResection\CResection.dsp
文件 543 2010-10-26 09:49 xnrg.net\空间后方交会的3种实现形式\CResection\CResection.dsw
文件 196608 2010-10-27 01:00 xnrg.net\空间后方交会的3种实现形式\CResection\CResection.exe
文件 901 2010-10-27 00:20 xnrg.net\空间后方交会的3种实现形式\CResection\CResection.h
文件 2755 2010-10-03 16:38 xnrg.net\空间后方交会的3种实现形式\CResection\MatrixOperation.h
文件 894 2010-11-02 21:57 xnrg.net\空间后方交会的3种实现形式\CResection\MatrixOperation.rar
文件 392 2012-03-02 10:18 xnrg.net\空间后方交会的3种实现形式\CResection\result.txt
文件 244 2010-10-01 10:00 xnrg.net\空间后方交会的3种实现形式\CResection\sourcedata.txt
文件 332 2012-03-02 10:20 xnrg.net\空间后方交会的3种实现形式\CResection\test.cpp
文件 9199 2010-10-27 00:58 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.cpp
文件 59 2010-10-27 22:22 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.def
文件 221184 2010-10-27 22:37 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.dll
文件 4240 2010-10-27 16:52 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.dsp
文件 545 2010-10-27 16:52 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.dsw
文件 926 2010-10-27 21:52 xnrg.net\空间后方交会的3种实现形式\CResection_dll\CResection.h
文件 2755 2010-10-03 16:38 xnrg.net\空间后方交会的3种实现形式\CResection_dll\MatrixOperation.h
文件 2755 2010-10-03 16:38 xnrg.net\空间后方交会的3种实现形式\Resection\MatrixOperation.h
文件 4395 2010-10-01 00:50 xnrg.net\空间后方交会的3种实现形式\Resection\Resection.dsp
文件 543 2010-10-01 00:50 xnrg.net\空间后方交会的3种实现形式\Resection\Resection.dsw
文件 244 2010-10-01 10:00 xnrg.net\空间后方交会的3种实现形式\Resection\sourcedata.txt
文件 10239 2012-03-02 10:20 xnrg.net\空间后方交会的3种实现形式\Resection\SpaceResection.cpp
文件 45 2010-10-01 00:40 xnrg.net\空间后方交会的3种实现形式\Resection\Test.cpp
文件 123233 2010-10-04 00:18 xnrg.net\空间后方交会的3种实现形式\Resection\单像空间后方交会.rar
文件 221184 2010-10-27 22:37 xnrg.net\空间后方交会的3种实现形式\testdll\CResection.dll
文件 924 2010-10-27 23:10 xnrg.net\空间后方交会的3种实现形式\testdll\CResection.h
文件 4488 2010-10-27 22:37 xnrg.net\空间后方交会的3种实现形式\testdll\CResection.lib
文件 1214 2010-10-27 22:52 xnrg.net\空间后方交会的3种实现形式\testdll\ReadMe.txt
文件 294 2010-10-27 22:52 xnrg.net\空间后方交会的3种实现形式\testdll\StdAfx.cpp
文件 667 2010-10-27 22:52 xnrg.net\空间后方交会的3种实现形式\testdll\StdAfx.h
............此处省略22个文件信息
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论