• 大小: 514KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: C/C++
  • 标签: C++  摄影测量  

资源简介

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个文件信息

评论

共有 条评论