資源簡介
武漢大學(xué)攝影測量原理課后練習(xí)空間后方交會作業(yè),C++編程實(shí)現(xiàn)單像空間后方交會算法,并根據(jù)實(shí)驗(yàn)數(shù)據(jù)輸出結(jié)果,并進(jìn)行精度評定

代碼片段和文件信息
//單張相片的空間后方交會程序
//說明:程序未作底片變形系統(tǒng)誤差改正,像點(diǎn)坐標(biāo)直接使用且內(nèi)方位元素X0=Y0=0像點(diǎn)坐標(biāo)為等精度不相關(guān)觀測值
#include?
#include?//標(biāo)準(zhǔn)輸出輸入流
#include?//用于數(shù)學(xué)計算
#include??//調(diào)用函數(shù)exit()需包含此文件
#include?//控制輸出格式需包含此文件
#include?“matrixfunction.h“//矩陣運(yùn)算頭文件
int?N=4;//控制點(diǎn)總數(shù)
/////////////////////////////////讀入數(shù)據(jù)函數(shù)/////////////////////////////////////////
void?getdata(char?*filenamedouble?*xdouble?*ydouble?*x1double?*y1double?*z1)
//讀取數(shù)據(jù)文件(文件名,像x,像y,物x1,物y1,物z1)
{
ifstream?filein(filenameios::in|ios::nocreate);??
????//?以輸入方式打開一個文件,ios::nocreate表示原文件不存在時,不創(chuàng)建
if(!filein)
{??cout<<“打開文件失敗!文件可能不存在!“< ???exit(1);
}
for(int?i=0;i filein>>x[i]>>y[i]>>x1[i]>>y1[i]>>z1[i];//讀入每行(每個控制點(diǎn))的像方和物方坐標(biāo)
filein.close();
}
int?main()
{
int?ij;//循環(huán)所用輔助參數(shù)
double?a1a2a3b1b2b3c1c2c3;//旋轉(zhuǎn)矩陣九個元素
double?f=153.24;//攝影機(jī)主距(mm)
double?X0=0; double?Y0=0;//內(nèi)方位元素為0
double?M=50000;//攝影比例尺分母
double?xsyszsfaiomgkaf;//6個外方位元素
double?*A=new?double?[2*N*6];//存放外方位元素系數(shù)A的矩陣2i*6
double?det[6];//6個外方位元素改正值矩陣
double?*L=new?double?[2*N];
double?*gpx=new?double?[N];double?*gpy=new?double?[N];double?*gpz=new?double?[N];//存儲控制點(diǎn)物方坐標(biāo)
double?*ipx=new?double?[N];double?*ipy=new?double?[N];//存儲控制點(diǎn)像方坐標(biāo)
double?*ipx0=new?double?[N];double?*ipy0=new?double?[N];//存儲由共線條件解算的近似像點(diǎn)坐標(biāo)
double?*AT=new?double[2*N*6];//存儲外方位元素系數(shù)轉(zhuǎn)置矩陣AT6*2i
double?*TEP1=new?double[36];double?*TEP2=new?double[6];double?*TEP3=new?double?[36];//中間臨時矩陣
double?Q[6];//存儲6個權(quán)倒數(shù)
double?*V=new?double?[2*N];//存儲像點(diǎn)觀測值改正數(shù)
double?Vsum=0m0;//單位權(quán)中誤差
double?m[6];//存儲六個外方位元素的中誤差
////////////////////////讀入觀測數(shù)據(jù)/////////////////////////////
getdata(“sourcefile.txt“ipxipygpxgpygpz);
////////////////////////確定未知數(shù)的初始值////////////////////////
f/=1000;//將主距f單位從mm劃成m
fai=omg=kaf=0.0;
xs=ys=0.0;zs=M*f;
for(i=0;i {
ipx[i]/=1000;
ipy[i]/=1000;
xs+=gpx[i];
ys+=gpy[i];
}
xs/=N;
ys/=N;
//////////////////////迭代///////////////////////
while?(fabs(det[0])>0.000001||fabs(det[1])>0.000001||fabs(det[2])>0.000001||fabs(det[3])>2.90888208656e-5
||fabs(det[4])>2.90888208656e-5||fabs(det[5])>2.90888208656e-5) //2.90888208656e-5為0.1分換算成的弧度值
{
/////////////////計算旋轉(zhuǎn)矩陣
a1=cos(fai)*cos(kaf)-sin(fai)*sin(omg)*sin(kaf);
a2=-cos(fai)*sin(kaf)-sin(fai)*sin(omg)*cos(kaf);
a3=-sin(fai)*cos(omg);
b1=cos(omg)*sin(kaf);
b2=cos(omg)*cos(kaf);
b3=-sin(omg);
c1=sin(fai)*cos(kaf)+cos(fai)*sin(omg)*sin(kaf);
c2=-sin(fai)*sin(kaf)+cos(fai)*sin(omg)*cos(kaf);
c3=cos(fai)*cos(omg);
///////////////////////////逐點(diǎn)計算///////////////////////////
for?(i=0;i {
////////////////根據(jù)共線方程由初始外方位元素計算像點(diǎn)近似值//////////////////
ipx0[i]=X0-f*(a1*(gpx[i]-xs)+b1*(gpy[i]-ys)+c1*(gpz[i]-zs))/(a3*(gpx[i]-xs)+b3*(gpy[i]-ys)+c3*(gpz[i]-zs));
ipy0[i]=Y0-f*(a2*(gpx[i]-xs)+b2*(gpy[i]-ys)+c2*(gpz[i]-zs))/(a3*(gpx[i]-xs)+b3*(gpy[i]-ys)+c3*(gpz[i]-zs));
//////////////////////逐點(diǎn)計算誤差方程的系數(shù)矩陣A///////////////
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????262239??2009-10-25?21:11??Space?resection\Debug\Spaceresection.exe
?????文件?????304600??2009-10-25?21:11??Space?resection\Debug\Spaceresection.ilk
?????文件??????41070??2009-10-25?21:11??Space?resection\Debug\Spaceresection.obj
?????文件?????343320??2009-10-25?21:11??Space?resection\Debug\Spaceresection.pch
?????文件?????484352??2009-10-25?21:11??Space?resection\Debug\Spaceresection.pdb
?????文件??????50176??2009-10-25?21:11??Space?resection\Debug\vc60.idb
?????文件??????69632??2009-10-25?21:11??Space?resection\Debug\vc60.pdb
?????文件???????2949??2009-10-20?11:51??Space?resection\matrixfunction.h
?????文件????????433??2009-10-25?21:11??Space?resection\result.txt
?????文件????????244??2009-10-04?15:36??Space?resection\sourcefile.txt
?????文件???????8103??2009-10-22?14:17??Space?resection\Spaceresection.cpp
?????文件???????3497??2009-10-20?21:54??Space?resection\Spaceresection.dsp
?????文件????????553??2009-10-20?22:04??Space?resection\Spaceresection.dsw
?????文件??????33792??2009-10-25?21:11??Space?resection\Spaceresection.ncb
?????文件??????53760??2009-10-25?21:11??Space?resection\Spaceresection.opt
?????文件???????1227??2009-10-25?21:11??Space?resection\Spaceresection.plg
?????目錄??????????0??2009-10-25?21:11??Space?resection\Debug
?????目錄??????????0??2009-10-25?21:11??Space?resection
?????文件????????244??2009-10-04?15:36??后方交會數(shù)據(jù).txt
-----------?---------??----------?-----??----
??????????????1660191????????????????????19
評論
共有 條評論