相对定向--课程设计报告_第1页
相对定向--课程设计报告_第2页
相对定向--课程设计报告_第3页
相对定向--课程设计报告_第4页
相对定向--课程设计报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告相对定向元素计算2010 年 5 月 15 日1 设计任务 -32 作业原理 -33 已知条件及数据-34 作业过程 -35 程序流程 - 46 源程序 - 57 计算结果 - 108心得体会与建议- 101 设计任务采用连续像对相对定向方法,计算出两张像片的相对定向元素,并运用一种高级语言解决此问题。2作业原理 解析法相对定向原理:根据同名光线对对相交这一立体像对内在的几何关系,通过量测的像点坐标,用解析计算的方法解求相对定向元素,建立与地面相似的立体模型,确定模型点的三维坐标。相对定向的共面条件:B(S1a1S2a2)=0,即F=连续像对的相对定向:连续像对法相对定向是以左像片

2、为基准,求出右像片相对于左像片的五个定向元素.为了统一单位,吧bY,bZ两个基线元素改为角度形式表示,如下,和为极限的偏角和倾角。将上式代入共面条件方程,B=mb ,F= =03已知条件及数据在一个航带内相邻两张像片上分别量测了6对同名点的像平面坐标,f=24mm,数据如下:点号左片右片x(mm)y(mm)x(mm)y(mm)1-6.0911.983-5.564-3.20227.0980.9247.694-2.83034.5381.0685.098-2.87846.8581.2087.429-2.5785-10.050-0.514-9.152-5.6426-8.0891.293-7.441-3

3、.9814作业过程 41原始数据的输入及像点坐标的预处理把在像点坐标量测仪器上量测出的各定向点的坐标换算成以像主点为原点的像点坐标并作系统误差改正。42确定相对定向元素的初始值: 对于连续像对法进行相对定向,如果是航线的第一个像对,则左像片的角元素为零;若是后续像对,则由前一像对的相对定向算得本像对左像片的角元素。右片的三个角元素的初始值取零,基线分量by、bz也取零,bx取标准点位第一点的左右视差,即bx=(x1-x2)1 。43计算左片的方向余弦值,组成旋转矩阵R1,计算左片各像点的像空间辅助坐标系(X1,Y1,Z1)。44计算右片的方向余弦值,组成旋转矩阵R2,计算基线分量by和bz。4

4、5计算右片各像点的空间辅助坐标(X2,Y2,Z2),计算各项点的投影系数N1,N2和上下视差Q;46逐点组成误差方程并法化,完成法方程系数矩阵和常数项矩阵的计算。47解法方程,求出相对定向元素的改正数。48计算相对定向元素的新值。 根据法方程,由式X=(AtA)-1 ATL解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。49检查所有的改正数是否小于限值0.00003 rad,如满足条件,则结束相对定向计算。否则重复4.44.9。5程序流程6 源程序#include#include#include#include#includeconst int N=6;int i,j,k

5、;double b,x63, y63,z63=0;/求转置矩阵templatevoid Transpose(T1*mat1,T2*mat2,int a,int b)for(i=0;ia;i+)for(j=0;jb;j+)mat2ji=mat1ij;return;/求矩阵的乘积templatevoid Array_mul(T1*mat1,T2 * mat2,T2 * result,int a,int b,int c) int i,j,k;for(i=0;ia;i+)for(j=0;jc;j+)resultij=0;for(k=0;kb;k+)resultij+=mat1ik*mat2kj;ret

6、urn;/求逆矩阵void swap(double *a,double *b)double c; c= *a; *a= *b; *b= c;Inverse(double A55,int n) int i,j,k; double d; int JSN,ISN; for (k=0;kn;k+) d=0; for (i=k;in;i+) for (j=k;jd) d=fabs(Aij); ISk=i; JSk=j; ; ; if (d+1.0=1.0) return 0; if (ISk!=k) for (j=0;jn;j+) swap( &Akj, &AISkj); if (JSk!=k) for

7、 (i=0;in;i+) swap( &Aik, &AiJSk); Akk=1/Akk; for (j=0;jn;j+) if (j!=k) Akj=Akj*Akk; for (i=0;in;i+) if (i!=k) for (j=0;jn;j+) if (j!=k) Aij=Aij-Aik*Akj; for (i=0;i=0;k-) for (j=0;jn;j+) if (JSk!=k) swap( &Akj, &AJSkj); for (i=0;in;i+) if (ISk!=k) swap( &Aik, &AiISk); ; return 1; /原始数据导入void Input()

8、double m;j=0;i=0;ifstream f1(左片各点像空间坐标.txt);if(!f1)cerr左片各点像空间坐标.txt file not open!m)xij+=m;if(j=3)i+;j=0;f1.close();cout左片各点像空间坐标坐标为:endl;for(i=0;i6;i+)for(j=0;j3;j+)if(j%3=0) coutendl; coutsetw(8)xij;coutendl;i=0;j=0;ifstream f2(右片各点像空间坐标.txt); if(!f2)cerr右片像各点空间坐标.txt file not open!m)yij+=m;if(j=

9、3)i+;j=0;f2.close();cout右片各点像空间坐标坐标为:endl;for(i=0;i6;i+)for(j=0;j3;j+)if(j%3=0) coutendl; coutsetw(8)yij;coutendl;b=0.;void main() double a5=0,d5=0, R33, N26,A65, AT56, l61,ATA55,ATl51,DG51; int t=0; Input(); do t+; for(i=0;i5;i+) ai=ai+di; /计算旋转矩阵 R00=cos(a0)*cos(a2)-sin(a0)*sin(a1)*sin(a2); R01=-c

10、os(a0)*sin(a2)-sin(a0)*sin(a1)*cos(a2); R02=-sin(a0)*cos(a1); R10=cos(a1)*sin(a2); R11=cos(a1)*cos(a2); R12=-sin(a1); R20=sin(a0)*cos(a2)+cos(a0)*sin(a1)*sin(a2); R21=-sin(a0)*sin(a2)+cos(a0)*sin(a1)*cos(a2); R22=cos(a0)*cos(a1); /计算右片各点空间辅助坐标 for(i=0;i6;i+) for(j=0;j3;j+) zij=Rj0*yi0+Rj1*yi1+Rj2*yi

11、2; for(i=0;i6;i+) N0i=(b*zi2-b*a4*zi0)/(xi0*zi2-zi0*xi2); N1i=(b*xi2-b*a4*xi0)/(xi0*zi2-zi0*xi2); for(i=0;i6;i+)li0=N0i*xi1-N1i*zi1-b*a3; for(i=0;i6;i+) Ai0=-zi0*zi1/zi2*N1i; Ai1=-(zi2+zi1*zi1/zi2)*N1i; Ai2=zi0*N1i; Ai3=b; Ai4=-zi1*b/zi2; Transpose(A,AT,6,5); Array_mul(AT,A,ATA,5,6,5); Inverse(ATA,5

12、); Array_mul(AT,l,ATl,5,6,1); Array_mul(ATA,ATl,DG,5,5,1); for(i=0;i5;i+)for(j=0;j0.00003)|(fabs(d1)0.00003)|(fabs(d2)0.00003)|(fabs(d3)0.00003)|(fabs(d4)0.00003);cout迭代次数为:tendl; cout未知数的解为:endl; cout=a0,=a1,=a2,; cout=a3,=a4.endl; ofstream f3(相对定向元素计算结果.txt); if(!f3) cerr相对定向元素计算结果.txt file not op

13、en!endl; exit(1); f3迭代次数为:tendl; f3相对定向元素的值为:endl; f3=a0,=a1,=a2,; f3bv=b*a3,bw=b*a4.endl; f3.close();7 计算结果迭代次数为:6相对定向元素的值为:=-0.,=-0.,=0., bv=0.m,bw=-0.m.8 心得体会与建议提到心得体会,首先心里冒出一个词“愧疚”。其实此次作业和上一次后方交会比较相似,程序方面也可以沿用上一次的一些函数和子程序,并且还有了上一次作业的基础,在原理和技术上,都不用很费心,相对难度没那么大。但是,此次作业我又延期了。这点非常不好,跟老师抱歉!其实更觉得对自己感到愧疚,克服不了被困难吓倒和懒散的毛病。我自己都讨厌极了自己这个毛病,以后一定要改掉这个坏习惯。就此次作业方面,感觉出现问题的有以下方面:1.语言上的选择。上一次我用的是c语言编程,但是实为借鉴过一位高手的程序后编写的,由于大一的时候学习的是c+,在c方面还是有很多地方不足,都要现学。这次我就想换成c+来编写,首先是比较熟悉,“有书可循”,其次是看过其他同学的程序后,感觉在此次的任务中,用c+较c要更简洁,也更我我们熟悉,方便交流。2. 相对定向元素的初始值的确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论