摄影测量学单像空间后方交会程序设计作业_第1页
摄影测量学单像空间后方交会程序设计作业_第2页
摄影测量学单像空间后方交会程序设计作业_第3页
摄影测量学单像空间后方交会程序设计作业_第4页
摄影测量学单像空间后方交会程序设计作业_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

摄影测量学单像空间后方交会程序设计作业摄影测量学单像空间后方交会程序设计作业摄影测量学单像空间后方交会程序设计作业xxx公司摄影测量学单像空间后方交会程序设计作业文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度usingSystem;using;using;namespace单像空间后方交会{classProgram{staticvoidMain(string[]args){intx0,y0,i,j;doublef,m;("请输入像片比例尺:");m=());("请输入像片的内方位元素x0:");//均以毫米为单位x0=());("请输入像片的内方位元素y0:");y0=());("请输入摄影机主距f:");f=());();//输入坐标数据double[,]zuobiao=newdouble[4,5];for(i=0;i<4;i++){for(j=0;j<5;j++){if(j<3){("请输入第{0}个点的第{1}个地面坐标:",i+1,j+1);zuobiao[i,j]=());}else{("请输入第{0}个点的第{1}个像点坐标:",i+1,j-2);zuobiao[i,j]=());}}();}//归算像点坐标for(i=0;i<4;i++){for(j=3;j<5;j++){if(j==3)zuobiao[i,j]=zuobiao[i,j]-x0;elsezuobiao[i,j]=zuobiao[i,j]-y0;}}//计算和确定初值doublezs0=m*f,xs0=0,ys0=0;for(i=0;i<4;i++){xs0=xs0+zuobiao[i,0];ys0=ys0+zuobiao[i,1];}xs0=xs0/4;ys0=ys0/4;//逐点计算误差方程系数double[,]xishu=newdouble[8,6];for(i=0;i<8;i+=2){doublex,y;x=zuobiao[i/2,3];y=zuobiao[i/2,4];xishu[i,0]=xishu[i+1,1]=-1/m;xishu[i,1]=xishu[i+1,0]=0;xishu[i,2]=-x/(m*f);xishu[i,3]=-f*(1+x*x/(f*f));xishu[i,4]=xishu[i+1,3]=-x*y/f;xishu[i,5]=y;xishu[i+1,2]=-y/(m*f);xishu[i+1,4]=-f*(1+y*y/(f*f));xishu[i+1,5]=-x;}//计算逆阵double[,]dMatrix=matrixChe(matrixTrans(xishu),xishu);double[,]dReturn=ReverseMatrix(dMatrix,6);("逆矩阵为:");if(dReturn!=null){matrixOut(dReturn);}//求解过程doublephi0=0,omega0=0,kappa0=0;intq=0;double[,]r=newdouble[3,3];double[,]jinsi=newdouble[4,2];double[]chazhi=newdouble[8];double[]jieguo=newdouble[6];double[,]zhong=matrixChe(dReturn,matrixTrans(xishu));do{//计算旋转矩阵rr[0,0]=(phi0)*(kappa0)-(phi0)*(omega0)*(kappa0);r[0,1]=(phi0)*(kappa0)-(phi0)*(omega0)*(kappa0);r[0,2]=(phi0)*(omega0);r[1,0]=(omega0)*(kappa0);r[1,1]=(omega0)*(kappa0);r[1,2]=(omega0);r[2,0]=(phi0)*(kappa0)+(phi0)*(omega0)*(kappa0);r[2,1]=(phi0)*(kappa0)+(phi0)*(omega0)*(kappa0);r[2,2]=(phi0)*(omega0);//计算x,y的近似值for(i=0;i<4;i++){jinsi[i,0]=-f*(r[0,0]*(zuobiao[i,0]-xs0)+r[1,0]*(zuobiao[i,1]-ys0)+r[2,0]*(zuobiao[i,2]-zs0))/(r[0,2]*(zuobiao[i,0]-xs0)+r[1,2]*(zuobiao[i,1]-ys0)+r[2,2]*(zuobiao[i,2]-zs0));jinsi[i,1]=-f*(r[0,1]*(zuobiao[i,0]-xs0)+r[1,1]*(zuobiao[i,1]-ys0)+r[2,1]*(zuobiao[i,2]-zs0))/(r[0,2]*(zuobiao[i,0]-xs0)+r[1,2]*(zuobiao[i,1]-ys0)+r[2,2]*(zuobiao[i,2]-zs0));}for(i=0;i<8;i+=2){chazhi[i]=zuobiao[i/2,3]-jinsi[i/2,0];chazhi[i+1]=zuobiao[i/2,4]-jinsi[i/2,1];}for(i=0;i<(0);i++){doublek=0;for(j=0;j<(1);j++){k=k+zhong[i,j]*chazhi[j];}jieguo[i]=k;}//求新的近似值xs0+=jieguo[0];ys0+=jieguo[1];zs0+=jieguo[2];phi0+=jieguo[3];omega0+=jieguo[4];kappa0+=jieguo[5];q++;if(q>1000)break;}while((jieguo[0])>||(jieguo[1])>||(jieguo[2])>;("共进行了{0}次运算",q);("旋转矩阵为");matrixOut(r);for(i=0;i<(0);i++){("第{0}个外方位元素为:{1}",i+1,jieguo[i]);}}//矩阵转置publicstaticdouble[,]matrixTrans(double[,]X){double[,]A=X;double[,]C=newdouble[(1),(0)];for(inti=0;i<(1);i++)for(intj=0;j<(0);j++){C[i,j]=A[j,i];}returnC;}//矩阵输出publicstaticvoidmatrixOut(double[,]X){double[,]C=X;for(inti=0;i<(0);i++){for(intj=0;j<(1);j++){("{0}",C[i,j]);}("\n");}}//二维矩阵相乘publicstaticdouble[,]matrixChe(double[,]X,double[,]Y){inti,j,n;doublem;double[,]C=X;double[,]D=Y;double[,]E=newdouble[(0),(0)];for(i=0;i<(0);i++){for(n=0;n<(0);n++){m=0;for(j=0;j<(1);j++){m=m+C[i,j]*D[j,n];}E[i,n]=m;}}returnE;}//计算行列式的值publicstaticdoubleMatrixValue(double[,]MatrixList,intLevel){double[,]dMatrix=newdouble[Level,Level];for(inti=0;i<Level;i++)for(intj=0;j<Level;j++)dMatrix[i,j]=MatrixList[i,j];doublec,x;intk=1;for(inti=0,j=0;i<Level&&j<Level;i++,j++){if(dMatrix[i,j]==0){intm=i;for(;dMatrix[m,j]==0;m++);if(m==Level)return0;else{for(intn=j;n<Level;n++){c=dMatrix[i,n];dMatrix[i,n]=dMatrix[m,n];dMatrix[m,n]=c;}k*=(-1);}}for(ints=Level-1;s>i;s--){x=dMatrix[s,j];for(intt=j;t<Level;t++)dMatrix[s,t]-=dMatrix[i,t]*(x/dMatrix[i,j]);}}doublesn=1;for(inti=0;i<Level;i++){if(dMatrix[i,i]!=0)sn*=dMatrix[i,i];elsereturn0;}returnk*sn;}//计算逆阵publicstaticdouble[,]ReverseMatrix(double[,]dMatrix,intLevel){doubledMatrixValue=MatrixValue(dMatrix,Level);if(dMatrixValue==0)returnnull;double[,]dReverseMatrix=newdouble[Level,2*Level];doublex,c;for(inti=0;i<Level;i++){for(intj=0;j<2*Level;j++){if(j<Level)dReverseMatrix[i,j]=dMatrix[i,j];elsedReverseMatrix[i,j]=0;}dReverseMatrix[i,Level+i]=1;}for(inti=0,j=0;i<Level&&j<Level;i++,j++){if(dReverseMatrix[i,j]==0){intm=i;for(;dMatrix[m,j]==0;m++);if(m==Level)returnnull;else{for(intn=j;n<2*Level;n++)dReverseMatrix[i,n]+=dReverseMatrix[m,n];}}x=dReverseMatrix[i,j];if(x!=1){for(intn=j;n<2*Level;n++)if(dReverseMatrix[

温馨提示

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

评论

0/150

提交评论