摄影测量程序汇总(后方交会前方交会单模型光束法平差)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序运行环境为Visual Studio2010.运行前请先将坐标数据放在debug 下。

1.单像空间后方交会

C语言程序:

#include

#include

#include

double *readdata();

void savedata(int hang,double *data,double *xishuarray,double *faxishu,double *l,int i,double xs,double ys,double zs,double fai,double oumiga,double kapa);

void transpose(double *m1,double *m2,int m,int n);

void inverse(double *a,int n);

void multi(double *mat1,double * mat2,double * result,int a,int b,int c);

void inverse(double *a,int n)/*正定矩阵求逆*/

{

int i,j,k;

for(k=0;k

{

for(i=0;i

{

if(i!=k)

*(a+i*n+k)=-*(a+i*n+k)/(*(a+k*n+k));

}

*(a+k*n+k)=1/(*(a+k*n+k));

for(i=0;i

{

if(i!=k)

{

for(j=0;j

{

if(j!=k)

*(a+i*n+j)+=*(a+k*n+j)* *(a+i*n+k);

}

}

}

for(j=0;j

{

if(j!=k)

*(a+k*n+j)*=*(a+k*n+k);

}

}

}

void transpose(double *m1,double *m2,int m,int n) //矩阵转置

{ int i,j;

for(i=0;i

for(j=0;j

m2[j*m+i]=m1[i*n+j];

return;

}

void multi(double *mat1,double *mat2,double * result,int a,int b,int c) { int i,j,k;

for(i=0;i

{for(j=0;j

{result[i*c+j]=0;

for(k=0;k

result[i*c+j]+=mat1[i*b+k]*mat2[k*c+j];

}

}

return;

}

double *readdata()

{

FILE *fp;

int i,j;

int number;

char datacatolog[100];

//scanf("%s",datacatolog);

if ((fp=fopen("控制点坐标.txt","r"))==NULL)

{

printf("读取数据出错!\n");

return false;

}

fscanf(fp,"%d",&number);

double *cordata=new double[number*5];

for (i=0;i

{

for (j=0;j<5;j++)

{

fscanf(fp,"%lf",cordata+i*5+j);

}

}

printf("控制点坐标数据读取成功!\n");

return cordata;

}

void savedata(int hang,double *data,double *xishuarray,double *faxishu,double *l,int i,double xs,double ys,double zs,double fai,double oumiga,double kapa)

{

FILE *fp;

char *file1="结算数据.txt";

fp=fopen(file1,"w");

fprintf(fp,"---------原始坐标数据为--------:\n");

for (int i=0;i

{

for (int j=0;j<5;j++)

{

fprintf(fp,"%7.4lf ",data[i*5+j]);

}

fprintf(fp,"\n");

}

fprintf(fp,"--------------------------------\n");

fprintf(fp,"---------误差方程系数阵为:--------:\n");

for (int i=0;i

{

for (int j=0;j<6;j++)

{

fprintf(fp,"%7.4lf ",xishuarray[i*5+j]);

}

fprintf(fp,"\n");

}

fprintf(fp,"--------------------------------\n");

fprintf(fp,"---------法方程系数阵为:--------:\n");

for (int i=0;i<6;i++)

{

for (int j=0;j<6;j++)

{

fprintf(fp,"%7.5lf ",faxishu[i*5+j]);

}

fprintf(fp,"\n");

}

fprintf(fp,"--------------------------------\n");

相关文档
最新文档