摄影测量学单像空间后方交会程序设计作业

上传人:积*** 文档编号:201788791 上传时间:2023-04-20 格式:DOC 页数:20 大小:47KB
收藏 版权申诉 举报 下载
摄影测量学单像空间后方交会程序设计作业_第1页
第1页 / 共20页
摄影测量学单像空间后方交会程序设计作业_第2页
第2页 / 共20页
摄影测量学单像空间后方交会程序设计作业_第3页
第3页 / 共20页
资源描述:

《摄影测量学单像空间后方交会程序设计作业》由会员分享,可在线阅读,更多相关《摄影测量学单像空间后方交会程序设计作业(20页珍藏版)》请在装配图网上搜索。

1、sig Syste;using Sstem.Colecons.Geri;uSsem.Lin;using SystemText;namspe 单像空间后方交会 la Prgram staic voiMain(strngrgs) nt x,y0, , j; double, m; olWte(请输入像片比例尺:); m= dube.arse(Conso.Readne()); onole.rite(请输入像片旳内方位元素x0:);/均以毫米为单位 x0 =in.ars(Conole.RLine(); nsole.Wrt(请输入像片旳内方位元素0:); y0 =intParse(onso.eaLine(

2、); no.Write(请输入照相机主距f:); doul.Parse(nsoe.eadLie()); onsole.WriteLine(); /输入坐标数据 ole,uobaone ouble4, ; fr (= 0; i ; i+) for (j = 0; ; j) i (j 3) Consoe.Writ(请输入第0个点旳第个地面坐标:, i +1, 1); uobiai,j = o.Pse(Consol.dLe()); ele Conolerite(请输入第0个点旳第1个像点坐标:, i + 1, 2); zuoiao, j = double.Pse(ConoleReadLne(); C

3、onsole.WiteLine(); /归算像点坐标 or (i= 0; i 4; i+) or (= 3; j 5; +) (j =) zuobiaoi,j = biaoi, j-; els zobio, j= zuoiaoi,j- y; /计算和拟定初值 doble zs0 =* f, xs0 0, y0 = ; for (i = ; i 4;i+) xs0 = xs0+ zobioi, 0; y = y0 uoioi, 1; xs0= xs 4; y0 = s0 / 4; /逐点计算误差方程系数 dble, xishu= new doble8, 6; fr (i = ; ; i +=2)

4、 doublex, ; = zbioi/ 2,3; = zubioi/2, 4; xishui, 0 = xishui +1, = -1 / m; xishui, = xshu + 1, = 0; xishu,2 - / ( * f);xishi, 3= -f * (+ x x / (f f)); xishui,4 isi 1, 3= x * / f; xhu, 5 =y;xishu +1, = y / (m * f); xshui +1, 4 = f * (1+ y*y /(f* )); xshi + 1, 5 = -x; /计算逆阵 doble, dMati =ixhe(mtrixTran

5、(xihu), shu); dole, dReturn =Rveseati(dMatrx, 6); Cosole.riten(逆矩阵为:); if (dRetur!u) atxOt(dRurn); /求解过程 ole phi0 = 0, mg0 =0, kapa0 ; it q =; double, r nw dobe, ; doubl, jini oul, 2; doubehazi = new dubl; double jieguo nw doule6; doubl, zn = matxCe(dReurn,atrixrans(xish); do /计算旋转矩阵 r0, =Mah.s(hi0)

6、 * Math.Co(ppa) - Mth.Si(phi0) * athSin(oega0) * Mh.in(kaa); r0, 1 =-a.Cs(ph0)* Mah.Sin(kapp0) - ath.Sin(i0) *Mat.i(oeg0) * ah.Cs(kappa0); r0, 2 = -Mth.Sn(pi) *athCs(mega0); r1, 0=Math.Co(omega) Mh.Sin(kapa); r1,1MthCos(omega0) * h.Cos(pa0); r1, 2 = -MathSin(oega0); r2, 0 = Math.Sin(pi0) *ath.os(kpp

7、a0) +Math.Cos(hi0)* Ma.Si(mea0) * Mth.Sin(kap0); ,1 = -athSin(pi0)*Mth.S(kappa0)+ Math.Cos(hi0)Mt.S(ega0) *Math.Cos(appa); r2, 2=MthCs(phi)* ahCos(oega); /计算x,y旳近似值 fo(i=0;i 4; +) isii, 0 =-f * (r0, * (uoiaoi, 0-s0) + r1, 0 * (zbioi, 1 - s0) r, 0 (zuobiaoi, 2 - zs0)) /(0, 2 *(uoiaoi, 0 - s) + r1, 2

8、(zbiaoi, 1 - 0) ,2 * (zuobiaoi, 2 zs); jisi, 1 = f *(0, 1 (zuobao, 0- x0) r1, 1*(uoiai, 1 ys0)+r2, 1 *(uobiao, 2 - s0)) / (r0,2 * (uobi, - xs0) + r, 2* (uobiai,1 - ys0) +r2,2*(zuobiaoi, 2 0)); o (i =; i ; i = 2) chaii= zuobiaoi2,3 -insii /2,0; chazhii + 1 = zoaoi 2, 4- jinsii , 1; fr(i = 0; i zhon.e

9、tLenth(0); i+) double k=0; or (j=0; j 0.020)| Mah.As(jieguo2) 020); Coole.rteLn(共进行了0次运算, q); onse.riteLine(旋转矩阵为); atrixut(r); for ( = 0; i jiuoetLengh(0); i+) Cnsole.rie(第0个外方位元素为:1, i , iegoi); /矩阵转置 pulic stati double, ariTrns(doule, X) doubl, A =X; doubl, C= w oblA.GetLenth(1), A.GeLength(0); f

10、or (i 0; A.Getent(); i+) or (int j=0; A.teng(); j+) Ci, j Aj, ; reun C; 矩阵输出 ublic sttic vidmatriut(double, X) doubl, C = X; or (in = ; i C.etLnt(0);+) for (int j0; j C.GetLth(); +) Csole.Wre( 0, Ci, ); onso.Wite(n); /二维矩阵相乘 pblc tatc dobl, marxC(double,X, obe, Y) nt ,j, ; double; double, C= X; doub

11、le, D=Y; oul, E new oubleGteth(0), .GetLnth(0); for (=0; i GtLengt(0); i+) or(n= ; n C.GeLength(); n+) m 0; for ( =0; j.GetLength(1); j+) m = m+ Ci, j*Dj, n; Ei, n = m; turE; /计算行列式旳值 ublicstatic doubeatrixalue(double, MatxList, int Le) double, dMarix = new douleLvel,Level; for(inti =; i evel; +) fo

12、 (int j= 0; j Level; j+) Matrii,j MatriListi, j; doue c,x; int = 1; or (int i , = 0; i Lvel & j Lee; +,+) (dMatrixi,j = 0) nt m i; for (; Matrixm, j = 0; m+) ; f (= evel) eturn 0; ese or (nt ; n Lel; n+) c dMtr, n; datrixi, n= dMaixm, ; Matrx, n c; k*=(-1); or (in s =Leel 1; s i;s-) x Mtrix, j; r(in

13、t j; t Level;t+) Mtrixs, t -= datii, t (x / dMatrixi, j); ouble sn 1; for(int i =0;i L;+) i (dMatrix,i ! 0) n *=dMatri, ; else rurn 0; retrn k*sn; /计算逆阵 pblic static double, RevereMtri(be,datrix, itLevl) dle dMatiValue = MtixValu(dMatri, Level); if(datriVaue = 0)etun nll; doube, Reerseari= ew double

14、Levl,2* Lev; dublx,c; or (it i = 0; evl;i+) o (int 0;j 2*Leve;j+) if(j Lvel) deeseMatrixi, j = dMarix,; el dReverMatrixi, j = 0; ReveeMatrii, evel + i = 1; f(in =0, = 0; i Lve & jLevl; i+,+) if (dReversetrixi, j = ) tm = i; for (; at,j =0;m+); if ( = Leel) rtrn ull; else for (int n = ; n * Level; +)

15、 dReerseMatix, n+ dRerseMaixm,n; x = dRerseMatrixi, j; f (x != 1) for (int = j; 2 eel; n+) f(dveseMtix, n != 0) ReversMatrix, n/= ; f (it s = Level 1; i; s-) x dReverseMatis, j; for(it t = ; t 0;i-) or (int j i 1; Leve; j+) f(dReratix, j!= 0) c = dReersMatixi, j; for (int n =; n 2 Level;n+) deverseMtrixi, n -= ( * ReverseMatrij, n); dle, dRetur new doubleLve, Level; for(i =; Level;+) fo (intj ; j Level; j+) dRetu, = everseMatix,j + el; etun dRtr;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!