摄影测量单片空间后方交会程序《C++》.doc_第1页
摄影测量单片空间后方交会程序《C++》.doc_第2页
摄影测量单片空间后方交会程序《C++》.doc_第3页
摄影测量单片空间后方交会程序《C++》.doc_第4页
摄影测量单片空间后方交会程序《C++》.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

输入文件形式如下:C+源程序如下:#include #include #include #include #include using namespace std;const int n=6;void inverse (double cnn);templatevoid transpose (T1*mat1,T2*mat2,int a,int b);templatevoid multi(T1*mat1,T2 * mat2,T2 * result,int a,int b,int c);templatevoid input (T*mat,int a,int b);templatevoid output(T*mat,char*s,int a,int b);int main()ofstream outFile;cout.precision(5);double x0=0.0, y0=0.0; double fk=0.15324; /内方位元素double m=39689; /估算比例尺 double B45=0.0,R33,XG61,AT68,ATA66,ATL61;input (B,4,5); /从文件中读取控制点的影像坐标和地面坐标,存入数组Bdouble Xs=0.0, Ys=0.0, Zs=0.0,Q=0.0,W=0.0,K=0.0; double X,Y,Z,L81,A86; /确定未知数的出始值for(int i=0;i4;i+)Xs=Xs+Bi2; Ys=Ys+Bi3; Zs=Zs+Bi4;Xs=Xs/4; Ys=Ys/4; Zs=Zs/4+m*fk;int f=0;do/迭代计算f+;/组成旋转矩阵 R00=cos(Q)*cos(K)-sin(Q)*sin(W)*sin(K); R01=-cos(Q)*sin(K)-sin(Q)*sin(W)*cos(K); R02=-sin(Q)*cos(W); R10=cos(W)*sin(K); R11=cos(W)*cos(K); R12=-sin(W); R20=sin(Q)*cos(K)+cos(Q)*sin(W)*sin(K); R21=-sin(Q)*sin(K)+cos(Q)*sin(W)*cos(K); R22=cos(Q)*cos(W); /计算系数阵和常数项 for(int i=0,k=0,j=0;i=6.0/206265.0|XG40=6.0/206265.0|XG50=6.0/206265.0);cout迭代次数为:fendl;/精度评定double AXG81,V81,VT18,VTV11,m0,D66;multi(A,XG,AXG,8,6,1); for( i=0;i8;i+) /计算改正数Vi0=AXGi0-Li0; transpose (V,VT,1,8); multi(VT,V,VTV,1,8,1); m0=VTV00/2;for(i=0;i6;i+)for(int j=0;j6;j+)Dij=m0*ATAij;/屏幕输出误差方程系数阵、常数项、改正数output(A,误差方程系数阵A为:,8,6);output(L,常数项L为:,8,1);output(XG,改正数为:,6,1);outFile.open(aim.txt,ios:app); /打开并添加aim.txt文件 outFile.precision(10);/以文件的形式输出像片外方位元素、旋转矩阵、方差阵outFile一、像片的外方位元素为:endlendl;outFilesetw(10)Xs=Xssetw(10)Ys=Yssetw(10)Zs=Zsendl;outFilesetw(20)航向倾角为:Qsetw(10)旁向倾角为:Wsetw(10)像片旋角为:Kendl;outFileendl二、旋转矩阵R为:endlendl;for( i=0;i3;i+)for(int j=0;j3;j+)outFilesetw(25)Rijsetw(25);outFileendl;outFileendl;outFilesetw(0)三、精度评定结果为:endl;outFile.precision(5);for(i=0;i6;i+)for(int j=0;j6;j+)outFilesetw(14)Dijsetw(14);outFileendl;outFile.close();return 0;templatevoid transpose(T1*mat1,T2*mat2,int a,int b) int i,j; for(i=0;ib;i+) for(j=0;ja;j+)mat2ji=mat1ij;return;templatevoid multi(T1*mat1,T2 * mat2,T2 * result,int a,int b,int c) int i,j,k;for(i=0;ia;i+)for(j=0;jc;j+)resultij=0;for(k=0;kb;k+)resultij+=mat1ik*mat2kj;return;template void input (T*mat,int a,int b) ifstream inFile;inFile.open(控制点坐标.txt);while(!inFile.eof()for (int i=0;ia;i+) for(int j=0;jmatij;inFile.close();return;templatevoid output(T*mat,char*s,int a,int b) coutsetw(15)sendl;for(int i=0;ia;i+)for(int j=0;jb;j+) coutsetw(13)matij;coutendl;return;void inverse(double cnn) int i,j,h,k; double p; double qn12; for(i=0;in;i+)/构造高斯矩阵 for(j=0;jn;j+) qij=cij; for(i=0;in;i+) for(j=n;j12;j+) if(i+6=j) qij=1; else qij=0; for(h=k=0;kn-1;k+,h+)/消去对角线以下的数据 for(i=k+1;in;i+) if(qih=0) continue; p=qkh/qih; for(j=0;j0;k-,h-) / 消去对角线以上的数据 for(i=k-1;i=0;i-) if(qih=0) continue; p=qkh/qih; for(j=0;j12;j+) qij*=p; q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论