相对定向--课程设计报告.doc
- 文档编号:82413
- 上传时间:2023-04-28
- 格式:DOC
- 页数:10
- 大小:886KB
相对定向--课程设计报告.doc
《相对定向--课程设计报告.doc》由会员分享,可在线阅读,更多相关《相对定向--课程设计报告.doc(10页珍藏版)》请在冰点文库上搜索。
课程设计报告
相对定向元素计算
2010年5月15日
1设计任务------------------------------------------------------------------------------------ 3
2作业原理--------------------------------------------------------------------------------------- 3
3已知条件及数据-------------------------------------------------------------------- 3
4作业过程--------------------------------------------------------------------------- 3
5程序流程----------------------------------------------------------------------------- 4
6源程序----------------------------------------------------------------------------- 5
7计算结果---------------------------------------------------------------------------10
8心得体会与建议-----------------------------------------------------------------------------10
1设计任务
采用连续像对相对定向方法,计算出两张像片的相对定向元素,并运用一种高级语言解决此问题。
2作业原理
解析法相对定向原理:
根据同名光线对对相交这一立体像对内在的几何关系,通过量测的像点坐标,用解析计算的方法解求相对定向元素,建立与地面相似的立体模型,确定模型点的三维坐标。
相对定向的共面条件:
B·(S1a1·S2a2)=0,即F=
连续像对的相对定向:
连续像对法相对定向是以左像片为基准,求出右像片相对于左像片的五个定向元素.为了统一单位,吧bY,bZ两个基线元素改为角度形式表示,如下,μ和ν为极限的偏角和倾角。
将上式代入共面条件方程,B=m·b,F===0
3已知条件及数据
在一个航带内相邻两张像片上分别量测了6对同名点的像平面坐标,f=24mm,
数据如下:
点号
左片
右片
x(mm)
y(mm)
x(mm)
y(mm)
1
-6.091
1.983
-5.564
-3.202
2
7.098
0.924
7.694
-2.830
3
4.538
1.068
5.098
-2.878
4
6.858
1.208
7.429
-2.578
5
-10.050
-0.514
-9.152
-5.642
6
-8.089
1.293
-7.441
-3.981
4作业过程
4.1原始数据的输入及像点坐标的预处理
把在像点坐标量测仪器上量测出的各定向点的坐标换算成以像主点为原点的像点坐标并作系统误差改正。
4.2确定相对定向元素的初始值:
对于连续像对法进行相对定向,如果是航线的第一个像对,则左像片的角元素为零;若是后续像对,则由前一像对的相对定向算得本像对左像片的角元素。
右片的三个角元素的初始值取零,基线分量by、bz也取零,bx取标准点位第一点的左右视差,即bx=(x1-x2)1。
4.3计算左片的方向余弦值,组成旋转矩阵R1,计算左片各像点的像空间辅助坐标系(X1,Y1,Z1)。
4.4计算右片的方向余弦值,组成旋转矩阵R2,计算基线分量by和bz。
4.5计算右片各像点的空间辅助坐标(X2,Y2,Z2),计算各项点的投影系数N1,N2和上下视差Q;
4.6逐点组成误差方程并法化,完成法方程系数矩阵和常数项矩阵的计算。
4.7解法方程,求出相对定向元素的改正数。
4.8计算相对定向元素的新值。
根据法方程,由式X=(AtA)-1ATL解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。
4.9检查所有的改正数是否小于限值0.00003rad,如满足条件,则结束相对定向计算。
否则重复4.4~4.9。
5程序流程
6源程序
#include
#include
#include
#include
#include
constintN=6;
inti,j,k;
doubleb,x[6][3],y[6][3],z[6][3]={0};
//求转置矩阵
template
{
for(i=0;i for(j=0;j mat2[j][i]=mat1[i][j]; return; } //求矩阵的乘积 template {inti,j,k; for(i=0;i {for(j=0;j {result[i][j]=0; for(k=0;k result[i][j]+=mat1[i][k]*mat2[k][j]; } } return; } //求逆矩阵 voidswap(double*a,double*b){doublec;c=*a;*a=*b;*b=c;}; Inverse(doubleA[5][5],intn) { inti,j,k; doubled; intJS[N],IS[N]; for(k=0;k { d=0; for(i=k;i for(j=k;j if(fabs(A[i][j])>d){ d=fabs(A[i][j]); IS[k]=i; JS[k]=j; }; }; if(d+1.0==1.0)return0; if(IS[k]! =k)for(j=0;j if(JS[k]! =k)for(i=0;i A[k][k]=1/A[k][k]; for(j=0;j =k)A[k][j]=A[k][j]*A[k][k]; for(i=0;i =k)for(j=0;j =k)A[i][j]=A[i][j]-A[i][k]*A[k][j]; for(i=0;i =k)A[i][k]=-A[i][k]*A[k][k]; }; for(k=n-1;k>=0;k--) { for(j=0;j =k)swap(&A[k][j],&A[JS[k]][j]); for(i=0;i =k)swap(&A[i][k],&A[i][IS[k]]); }; return1; } //原始数据导入 voidInput() {doublem;j=0;i=0; ifstreamf1("左片各点像空间坐标.txt"); if(! f1) { cerr<<"左片各点像空间坐标.txtfilenotopen! "< exit (1); } while(f1>>m) { x[i][j++]=m; if(j>=3) {i++;j=0;} } f1.close(); cout<<"左片各点像空间坐标坐标为: "< for(i=0;i<6;i++) for(j=0;j<3;j++) { if(j%3==0) cout< cout< } cout< i=0;j=0; ifstreamf2("右片各点像空间坐标.txt"); if(! f2) { cerr<<"右片像各点空间坐标.txtfilenotopen! "< exit (1); } while(f2>>m) { y[i][j++]=m; if(j>=3) {i++;j=0;} } f2.close(); cout<<"右片各点像空间坐标坐标为: "< for(i=0;i<6;i++) for(j=0;j<3;j++) { if(j%3==0) cout< cout< } cout< b=0.000527; } voidmain() { doublea[5]={0},d[5]={0},R[3][3],N[2][6],A[6][5],AT[5][6],l[6][1],ATA[5][5],ATl[5][1],DG[5][1]; intt=0; Input(); do{ t++; for(i=0;i<5;i++) a[i]=a[i]+d[i]; //计算旋转矩阵 R[0][0]=cos(a[0])*cos(a[2])-sin(a[0])*sin(a[1])*sin(a[2]); R[0][1]=-cos(a[0])*sin(a[2])-sin(a[0])*sin(a[1])*cos(a[2]); R[0][2]=-sin(a[0])*cos(a[1]); R[1][0]=cos(a[1])*sin(a[2]); R[1][1]=cos(a[1])*cos(a[2]); R[1][2]=-sin(a[1]); R[2][0]=sin(a[0])*cos(a[2])+cos(a[0])*sin(a[1])*sin(a[2]); R[2][1]=-sin(a[0])*sin(a[2])+cos(a[0])*sin(a[1])*cos(a[2]); R[2][2]=cos(a[0])*cos(a[1]); //计算右片各点空间辅助坐标 for(i=0;i<6;i++) for(j=0;j<3;j++) z[i][j]=R[j][0]*y[i][0]+R[j][1]*y[i][1]+R[j][2]*y[i][2]; for(i=0;i<6;i++) { N[0][i]=(b*z[i][2]-b*a[4]*z[i][0])/(x[i][0]*z[i][2]-z[i][0]*x[i][2]); N[1][i]=(b*x[i][2]-b*a[4]*x[i][0])/(x[i][0]*z[i][2]-z[i][0]*x[i][2]); } for(i=0;i<6;i++) l[i][0]=N[0][i]*x[i][1]-N[1][i]*z[i][1]-b*a[3]; for(i=0;i<6;i++) { A[i][0]=-z[i][0]*z[i][1]/z[i][2]*N[1][i]; A[i][1]=-(z[i][2]+z[i][1]*z[i][1]/z[i][2])*N[1][i]; A[i][2]=z[i][0]*N[1][i]; A[i][3]=b; A[i][4]=-z[i][1]*b/z[i][2]; } Transpose(A,AT,6,5); Array_mul(AT,A,ATA,5,6,5); Inverse(ATA,5); Array_mul(AT,l,ATl,5,6,1); Array_mul(ATA,ATl,DG,5,5,1); for(i=0;i<5;i++) for(j=0;j<1;j++) d[i]=DG[i][j]; }while((fabs(d[0])>0.00003)||(fabs(d[1])>0.00003)||(fabs(d[2])>0.00003)||(fabs(d[3])>0.00003)||(fabs(d[4])>0.00003)); cout<<"迭代次数为: "< cout<<"未知数的解为: "< cout<<"ψ="< cout<<"μ="< ofstreamf3("相对定向元素计算结果.txt"); if(! f3) {cerr<<"相对定向元素计算结果.txtfilenotopen!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 相对 定向 课程设计 报告