- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摄影测量后方交会程序(c/c++)
输入数据截图:
结果截图:
程序源代码(其中的矩阵求逆在前面已经有了,链接):
#include stdio.h#include stdlib.h#include math.h
const double PRECISION=1e-5;typedef double DOUBLE[5];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 *matrix,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打开原始数据,其它退出程序):);?? fflush(stdin);?? //刷新输入流?? char order=getchar();???? if (P==order || p==order)?? {????? system(结果.txt);?? }?? else if (R==order || r==order)?? {??? system(data.txt);?? }?? else??? break;?? system(cls);}while(1);system(PAUSE);return 0;}
/***********************************************函数名:InputData?????*函数介绍:从文件(data.txt)中读取数据,*文件格式如下: *点数 m(未知写作0)* 内方位元素(f x0 y0)*编号 x y X Y Z*下面是一个实例:4 0153.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, DOUBLE *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 DOUBLE[Num];double *temp= new double[Num-1];double scale=0;
int i;for (i=0;iNum;i++){?? //读取数据,忽略编号?? if(fscanf(fp_input,%*d%lf%lf%lf%lf%lf,??? Data[i][0],Data[i][1],Data[i][2],??? Data[i][3],Data[i][4])!=5)
文档评论(0)