《摄影测量后方交会程序》由会员分享,可在线阅读,更多相关《摄影测量后方交会程序(17页珍藏版)》请在金锄头文库上搜索。
1、. .摄影测量前方交会程序c/c+输入数据截图:结果截图:程序源代码其中的矩阵求逆在前面已经有了,:#include #include #include const double PRECISION=1e-5;typedef double DOUBLE5;int InputData(int &Num, DOUBLE *&Data,double &m,double &f);int Resection(const int &Num,const DOUBLE *&Data,const double &m,const double &f);int InverseMatrix(double *matri
2、x,const int &row);int main(int argc, char* argv)DOUBLE *Data=NULL;int Num;double f(0),m(0);if(InputData(Num,Data,m,f)if (Data!=NULL)delete Data;return 1;if(Resection(Num,Data,m,f)if (Data!=NULL)delete Data;return 1;if (Data!=NULL)delete Data;printf(解算完毕.n);do printf(计算结果保存于结果.txt文件中n请选择操作输入P翻开结果数据,R
3、翻开原始数据,其它退出程序:);fflush(stdin); /刷新输入流char order=getchar(); if (P=order | p=order) system(结果.txt);else if (R=order | r=order)system(data.txt);elsebreak;system(cls);while(1);system(PAUSE);return 0;/*函数名:InputData *函数介绍:从文件data.txt中读取数据,*文件格式如下: *点数 m(未知写作0)* 内方位元素(f x0 y0)*编号 x y X Y Z*下面是一个实例:4 0153.
4、24 0 01 -86.15 -68.99 36589.41 25273.32 2195.172 -53.40 82.21 37631.08 31324.51 728.693 -14.78 -76.63 39100.97 24934.98 2386.504 10.46 64.43 40426.54 30319.81 757.31*参数:(in/out)Num(点数),*(in/out)Data(存放数据),m,f,x0,y0*返回值:int ,0成功,1文件翻开失败,2控制点个*数缺乏,3文件格式错误* vcrs*完成时间:09-10-4*/int InputData(int &Num, DO
5、UBLE *&Data,double &m,double &f)double x0,y0;FILE *fp_input;if (!(fp_input=fopen(data.txt,r)return 1;fscanf(fp_input,%d%lf,&Num,&m);if (Num4)return 2;fscanf(fp_input,%lf%lf%lf,&f,&x0,&y0);f/=1000;if (m0 | f0)return 3;Data=new DOUBLENum;double *temp= new doubleNum-1;double scale=0;int i;for (i=0;iNum
6、;i+)/读取数据,忽略编号if(fscanf(fp_input,%*d%lf%lf%lf%lf%lf,&Datai0,&Datai1,&Datai2,&Datai3,&Datai4)!=5)return 3;/单位换算成mDatai0/=1000.0;Datai1/=1000.0;/如果m未知那么归算其值if (0=m)for (i=0;iNum-1;i+)tempi=(Datai2-Datai+12)/(Datai0-Datai+10)+(Datai3-Datai+13)/(Datai1-Datai+11);scale+=tempi/2.0;m=scale/(Num-1);fclose(f
7、p_input);delete temp;return 0;/*函数名:MatrixMul *函数介绍:求两个矩阵的积,*参数:Jz1(第一个矩阵),row(第一个矩阵行数),*Jz2(第二个矩阵),row(第二个矩阵列数),(第一个*矩阵列数),(out)JgJz(存放结果矩阵)*返回值:void* vcrs*完成时间:09-10-4*/void MatrixMul(double *Jz1,const int &row,double *Jz2,const int &line,const int &,double *JgJz)for (int i=0;irow;i+)for (int j=0;
8、jline;j+)double temp=0;for (int k=0;k;k+)temp+=*(Jz1+i*+k)*(*(Jz2+k*line+j);*(JgJz+i*line+j)=temp; /*函数名:OutPut *函数介绍:向结果.txt文件输出数据*参数:Q协因数阵,m精度,m0单位权中误差,6个外*方位元素,旋转矩阵*返回值:int,0成功,1失败* vcrs*完成时间:09-10-4*/int OutPut(const double *&Q,const double *&m,const double &m0,const double &Xs,const double &Ys,
9、const double &Zs,const double &Phi,const double &Omega,const double &Kappa,const double *R)FILE *fp_out;if (!(fp_out=fopen(结果.txt,w)return 1;FILE *fp_input;if (!(fp_input=fopen(data.txt,r)return 1;fprintf(fp_out,*n);fprintf(fp_out,n空间前方交会程序(CC+)n遥感信息工程学院n班级:00000n学号:0000000n*:vcrsnn);fprintf(fp_out,
10、*n);fprintf(fp_out,数据:nn点数:);int num;double temp,x,y;fscanf(fp_input,%d%lf,&num,&temp);fprintf(fp_out,%dn,num);fprintf(fp_out,摄影比例尺0表示其值位置:);fprintf(fp_out,%10.0lfn,temp);fprintf(fp_out,内方位元素(f x0 y0):);fscanf(fp_input,%lf%lf%lf,&temp,&x,&y);fprintf(fp_out,%10lft%10lft%10lfn,temp,x,y);for (int i=0;i
11、num;i+)double temp5;fscanf(fp_input,%*d%lf%lf%lf%lf%lf,&temp0,&temp1,&temp2,&temp3,&temp4);fprintf(fp_out,%3dt%10lft%10lft%10lft%10lft%10lfn,i+1,temp0,temp1,temp2,temp3,temp4);fclose(fp_input);fprintf(fp_out,*n);fprintf(fp_out,计算结果如下:nn外方位元素:n);fprintf(fp_out,tXs=%10lfn,Xs);fprintf(fp_out,tYs=%10lfn,Ys);fprintf(fp_out,tZs=%10lfn,