摄影测量后方交会程序(c/c++)
输入数据截图:
结果截图:程序源**(其中的矩阵求逆在前面已经有了,链接):
#include <>
#include <>
#include <>
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* ar**)
double *data=null;
int num;
double f(0),m(0);
if(inputdata(num,data,m,f))
if (data!=null)
return 1;
if(resection(num,data,m,f))
if (data!=null)
return 1;
if (data!=null)
delete data;
printf("解算完毕。n");
doelse if ('r'==order ||r'==order)
elsebreak;
system("cls");
while(1);
system("pause");
return 0;
函数名:inputdata
函数介绍:从文件(中读取数据,文件格式如下:
点数 m(未知写作0)
内方位元素(f x0 y0)
编号 x y x y z
下面是一个实例:
参数:(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(""r"))
return 1;
fscanf(fp_input,"%d%lf",&num,&m);
if (num<4)
return 2;
fscanf(fp_input,"%lf%lf%lf",&f,&x0,&y0);
f/=1000;
if (m<0 ||f<0)
return 3;
data=new double[num];
double *temp= new double[num-1];
double scale=0;
int i;
for (i=0;i//如果m未知则归算其值。
if (0==m)
for (i=0;i
函数名:matrixmul
函数介绍:求两个矩阵的积,参数:jz1(第一个矩阵),row(第一个矩阵行数),jz2(第二个矩阵),row(第二个矩阵列数),com(第一个。
矩阵列数),(out)jgjz(存放结果矩阵)
返回值:void
作者:vcrs
完成时间:09-10-4
void matrixmul(double *jz1,const int &row,double *jz2,const int &line,const int &com,double *jgjz)
for (int i=0;i
函数名: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,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(""r"))
return 1;
fprintf(fp_out
n");fprintf(fp_out,"空间后方交会程序(c\\c++)n遥感信息工程学院班级:"
"00000学号:0000000姓名:vcrs");
fprintf(fp_out
n");fprintf(fp_out,"已知数据:已知点数:")
int num;double temp,x,y;
fscanf(fp_input,"%d%lf",&num,&temp);
fprintf(fp_out,"%d",num);
fprintf(fp_out,"摄影比例尺(0表示其值位置):"
fprintf(fp_out,"%10.0lf",temp);
fprintf(fp_out,"内方位元素(f x0 y0):"
fscanf(fp_input,"%lf%lf%lf",&temp,&x,&y);
fprintf(fp_out,"%10lf\t%10lf\t%10lf",temp,x,y);
for (int i=0;ifprintf(fp_out
n");fprintf(fp_out,"计算结果如下:外方位元素:");
fprintf(fp_out,"\txs=%10lf",xs);
fprintf(fp_out,"\tys=%10lf",ys);
fprintf(fp_out,"\tzs=%10lf",zs);
fprintf(fp_out,"\tphi=%10lf",phi);
fprintf(fp_out,"\tomega=%10lf",omega);
fprintf(fp_out,"\tkappa=%10lf",kappa);
摄影测量后方交会程序报告
实习报告。学院 学号 2009 姓名 班级 一 实习目的。1 深入理解单片空间后方交会的原理,2 在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。二 实习原理。以单幅影象为基础,从该影象所覆盖地面范围内若干控制点的已知地面坐标和相应点像点坐标量测值出发,根据共线条件方程,求解...
摄影测量空间后方交会
以单张影像空间后方交会方法,求解该像的外方位元素。一 实验数据与理论基础 1 实验数据 航摄仪内方位元素f 153.24mm,x0 y0 0,以及4对点的影像坐标和相应的地面坐标 2 理论基础。1 空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值...
摄影测量与遥感测量
摄影测量与遥感测量 课程标准。课程名称 摄影测量与遥感。适用专业 工程测量 矿山测量。总学时数 96 理论课学时数 68 实践课学时数 28 一 课程的性质。摄影测量 是一门高职工程测量 矿山测量专业基础课程,也是一门专业必修课。二 课程定位。该课程以摄影测量的基本理论为基础,以像片影响信息获取到解...