資源簡介
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個文件信息
評論
共有 條評論