




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include<stdio.h>#include<math.h>#define n 4 /控制點個數(shù)#define PI 3.14159265struct coordinatedouble x; /像點坐標double y;double Xt; /控制點坐標double Yt;double Zt;/ void inverse(double c66) /矩陣求逆/ / int i,j,h,k;/ double p;/ double q612;/ for(i=0;i<6;i+)/構(gòu)造高斯矩陣/ for(j=0;j<6;j+)/ qij=cij;/ for(i=
2、0;i<6;i+)/ for(j=6;j<12;j+)/ / if(i+6=j)/ qij=1;/ else/ qij=0;/ / for(h=k=0;k<n-1;k+,h+)/消去對角線以下的數(shù)據(jù)/ for(i=k+1;i<6;i+)/ / if(qih=0)/ continue;/ p=qkh/qih;/ /p=qih/qkh;/ for(j=0;j<12;j+)/ / qij*=p;/ qij-=qkj;/ / / for(h=k=5;k>0;k-,h-) / 消去對角線以上的數(shù)據(jù)/ for(i=k-1;i>=0;i-)/ / if(qih=0)
3、/ continue;/ p=qkh/qih;/ /p=qih/qkh;/ for(j=11;j>0;j-)/ / qij*=p;/ qij-=qkj;/ / / for(i=0;i<6;i+)/將對角線上數(shù)據(jù)化為1/ / p=1.0/qii;/ for(j=0;j<12;j+)/ qij*=p;/ / for(i=0;i<6;i+) /提取逆矩陣/ for(j=0;j<n;j+)/ / cij=qij+6;/ / void ContraryMatrix(double *const pMatrix, double *const _pMatrix, const in
4、t &dim) int ii,jj,kk;int flag=0;double *tMatrix = new double2*dim*dim;for (int i=0; i<dim; i+)for (int j=0; j<dim; j+)tMatrixi*dim*2+j = pMatrixi*dim+j; for (i=0; i<dim; i+)for (int j=dim; j<dim*2; j+)tMatrixi*dim*2+j = 0.0;tMatrixi*dim*2+dim+i = 1.0; /Initialization over!for (i=0; i
5、<dim; i+)/Process Colsdouble base = tMatrixi*dim*2+i;if (fabs(base) < 1E-300)for (ii=i;ii<dim;ii+)if(tMatrixii*dim*2+i!=0)flag=1;for (jj=0;jj<2*dim;jj+)tMatrixi*dim*2+jj+=tMatrixii*dim*2+jj; base = tMatrixi*dim*2+i;if (flag=0)printf( "求逆矩陣過程中被零除,無法求解!") ;/exit(0);for (int j=0;
6、j<dim; j+)/rowif (j = i) continue;double times = tMatrixj*dim*2+i/base;for (int k=0; k<dim*2; k+)/col tMatrixj*dim*2+k = tMatrixj*dim*2+k - times*tMatrixi*dim*2+k; for (int k=0; k<dim*2; k+)tMatrixi*dim*2+k /= base;for (i=0; i<dim; i+)for (int j=0; j<dim; j+)_pMatrixi*dim+j = tMatrixi
7、*dim*2+j+dim; delete tMatrix;void main()double f,xo,yo; /內(nèi)方位元素int m; /攝影比例尺分母f=0.15324;xo=0;yo=0;m=50000;struct coordinate coorn=-0.08615,-0.06899,36589.41,25273.32,2195.17,-0.05340,0.08221,37631.08,31324.51,728.69,-0.01478,-0.07663,39100.97,24934.98,2386.50,0.01046,0.06443,40426.54,30319.81,757.31;
8、 int i,j; /循環(huán)變量double Xs,Ys,Zs; /外方位線元素double phi,omega,kappa; /外方位角元素double R33; /旋轉(zhuǎn)矩陣Rdouble (x)n,(y)n; /控制點像點坐標的近似值 double A86; /誤差方程中的矩陣Adouble ATA66; /矩陣A的轉(zhuǎn)置矩陣與A的乘積double L81;double ATL61; /矩陣A的轉(zhuǎn)置矩陣與L的乘積double _ATA66;double X61; /未知數(shù)矩陣double V81; /改正數(shù)矩陣double DXs,DYs,DZs,Dphi,Domega,Dkappa; /6個
9、外方位元素的改正值/與精度計算有關(guān)的量double m0; /單位權(quán)中誤差double Q66; /協(xié)方差矩陣double m1,m2,m3,m4,m5,m6; /未知數(shù)Xs,Ys,Zs,phi,omega,kappa的中誤差矩陣 Xs=0;Ys=0;for(i=0;i<n;i+)Xs+=coori.Xt;Ys+=coori.Yt;/外方位元素的初始值Xs/=n; Ys/=n;Zs=f*m;phi=0;omega=0;kappa=0; /在豎直攝影情況下 do /計算旋轉(zhuǎn)矩陣R的各個元素R00=cos(phi)*cos(kappa)-sin(phi)*sin(omega)*sin(kap
10、pa);R01=-cos(phi)*sin(kappa)-sin(phi)*sin(omega)*cos(kappa);R02=-sin(phi)*cos(omega);R10=cos(omega)*sin(kappa);R11=cos(omega)*cos(kappa);R12=-sin(omega);R20=sin(phi)*cos(kappa)+cos(phi)*sin(omega)*sin(kappa);R21=-sin(phi)*sin(kappa) + cos(phi)*sin(omega)*cos(kappa);R22=cos(phi)*cos(omega);/將未知數(shù)的近似值代
11、人共線方程式,計算(x),(y)for(i=0;i<n;i+)(x)i=-f*(R00*(coori.Xt-Xs)+R10*(coori.Yt-Ys)+R20*(coori.Zt-Zs)/(R02*(coori.Xt-Xs)+R12*(coori.Yt-Ys)+R22*(coori.Zt-Zs); (y)i=-f*(R01*(coori.Xt-Xs)+R11*(coori.Yt-Ys)+R21*(coori.Zt-Zs)/(R02*(coori.Xt-Xs)+R12*(coori.Yt-Ys)+R22*(coori.Zt-Zs);/計算矩陣A的各個元素for(i=0;i<n;i+)
12、A2*i0=(R00*f + R02 * (coori.x - xo) / (R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs);A2*i1=(R10*f + R12 * (coori.x - xo) / (R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs);A2*i2=(R20*f + R22 * (coori.x - xo) / (R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.
13、Zt - Zs);A2*i3=(coori.y-yo)*sin(omega)-(coori.x-xo)/f*(coori.x-xo)*cos(kappa)-(coori.y-yo)*sin(kappa)+f*cos(kappa)*cos(omega);A2*i4=-f*sin(kappa)-(coori.x-xo)/f*(coori.x-xo)*sin(kappa)+(coori.y-yo)*cos(kappa);A2*i5=coori.y-yo;A2*i+10=(R01*f + R02 * (coori.y - yo) / (R02*(coori.Xt - Xs) + R12*(coori.
14、Yt - Ys) + R22*(coori.Zt - Zs);A2*i+11=(R11*f + R12 * (coori.y - yo) / (R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs);A2*i+12=(R21*f + R22 * (coori.y - yo) / (R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs);A2*i+13=-(coori.x-xo)*sin(omega)-(coori.y-yo)/f*(coori.x-xo
15、)*cos(kappa)-(coori.y-yo)*sin(kappa)-f*sin(kappa)*cos(omega);A2*i+14=-f*cos(kappa)-(coori.y-yo)/f*(coori.x-xo)*sin(kappa)+(coori.y-yo)*cos(kappa);A2*i+15=-(coori.x-xo);for (i=0;i<6;i+)for (j=0;j<6;j+)printf("%f ",Aij);if (j%5=0&&j!=0)printf("n");printf("'n&
16、quot;);/計算ATA的各個元素for(i=0;i<6;i+)for(j=0;j<6;j+)ATAij=A0i*A0j+A1i*A1j+A2i*A2j+A3i*A3j+A4i*A4j+A5i*A5j+A6i*A6j+A7i*A7j; for (i=0;i<6;i+)for (j=0;j<6;j+)_ATAij=ATAij;printf("%f ",ATAij);if (j%5=0&&j!=0)printf("n");printf("n");/計算矩陣L的各個元素for(i=0;i<n;
17、i+)L2*i0=coori.x+f*(R00*(coori.Xt-Xs)+R10*(coori.Yt-Ys)+R20*(coori.Zt-Zs)/(R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs); L2*i+10=coori.y+f*(R01*(coori.Xt-Xs)+R11*(coori.Yt-Ys)+R21*(coori.Zt-Zs)/(R02*(coori.Xt - Xs) + R12*(coori.Yt - Ys) + R22*(coori.Zt - Zs);/計算矩陣ATL的各個元素值for(i=0;
18、i<6;i+)ATLi0=A0i*L00+A1i*L10+A2i*L20+A3i*L30+A4i*L40+A5i*L50+A6i*L60+A7i*L70;/*for (i=0;i<6;i+)for (j=0;j<1;j+)ATLij=0;for (int k=0;k<8;k+)ATLij+=Aki*Lkj;*/調(diào)用函數(shù)計算矩陣ATA的逆矩陣/inverse(ATA); ContraryMatrix(*_ATA, *ATA, 6);for (i=0;i<6;i+)for (j=0;j<6;j+)printf("%f ",ATAij);if
19、(j%5=0&&j!=0)printf("n");/計算矩陣X的各個元素值for(i=0;i<6;i+)Xi0=ATAi0*ATL00+ATAi1*ATL10+ATAi2*ATL20+ATAi3*ATL30+ATAi4*ATL40+ATAi5*ATL50;printf("%f ",Xi0);/ for (i=0;i<6;i+)/ / for (j=0;j<1;j+)/ / Xij=0;/ for (int k=0;k<6;k+)/ / Xij+=ATAik*ATLkj;/ / / printf("%f&q
20、uot;,Xij);/ / DXs=X00;DYs=X10;DZs=X20;Dphi=X30;Domega=X40;Dkappa=X50;Xs+=DXs;Ys+=DYs;Zs+=DZs;phi+=Dphi;omega+=Domega;kappa+=Dkappa;/計算矩陣V的各個元素for(i=0;i<n;i+)V2*i0=A2*i0*DXs+A2*i1*DYs+A2*i2*DZs+A2*i3*Dphi+A2*i4*Domega+A2*i5*Dkappa-L2*i0;V2*i+10=A2*i+10*DXs+A2*i+11*DYs+A2*i+12*DZs+A2*i+13*Dphi+A2*i
21、+14*Domega+A2*i+15*Dkappa-L2*i+10;/*/像點坐標改正后的值for(i=0;i<n;i+)coori.x+=V2*i0;coori.y+=V2*i+10;*/判斷限差的條件while(!(fabs(Dphi) < 0.1/60/180*PI && fabs(Domega) < 0.1/60/180*PI && fabs(Dkappa) < 0.1/60/180*PI); /外方位元素計算完畢/有關(guān)精度的計算for(i=0;i<6;i+)Qii=ATAii;m0=sqrt(V00*V00+V10*V10
22、+V20*V20+V30*V30+V40*V40+V50*V50+V60*V60+V70*V70)/(2*n-6);/計算各未知數(shù)的中誤差m1=sqrt(Q00)*m0;m2=sqrt(Q11)*m0;m3=sqrt(Q22)*m0;m4=sqrt(Q33)*m0;m5=sqrt(Q44)*m0;m6=sqrt(Q55)*m0;printf("改正后的相對坐標及其對應的地面點坐標(x,y,Xt,Yt,Zt):n");for(i=0;i<n;i+)printf("%lft%lft%lft%lft%lf",(x)i,(y)i,coori.Xt,coor
23、i.Yt,coori.Zt);printf("n");printf("旋轉(zhuǎn)矩陣R:n");for(i=0;i<3;i+)for(j=0;j<3;j+)printf("%lft",Rij);printf("n");printf("外方位元素(Xs,Ys,Zs,phi,omega,kappa)及改正值:n");printf("%lf+-%lfn%lf+-%lfn%lf+-%lfn%lf+-%lfn%lf+-%lfn%lf+-%lfn",Xs,DXs,Ys,DYs,Zs,DZs,phi,Dphi,omega,Domega,kappa,Dkappa);printf("單位權(quán)中誤差:n");printf("%0.9fn",m0);printf("外方位元素(Xs,Ys,Zs,phi,omega,kappa)的中誤差:n");printf("%lfn%lfn%lfn%lfn%lfn%lfn",m1,m2,m3,m4,m5,m6);/計算完畢,輸出結(jié)果,以文件方式保存printf("計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機合成中生物轉(zhuǎn)化技術(shù)的應用考核試卷
- 照明設(shè)備結(jié)構(gòu)強度分析與優(yōu)化設(shè)計考核試卷
- 自動扶梯入口過渡橋板設(shè)計考核試卷
- 玻璃儀器噴涂與涂裝工藝考核試卷
- 智能家居電氣系統(tǒng)集成項目施工合同
- 5G通信技術(shù)試驗項目補充協(xié)議
- 直播節(jié)目內(nèi)容審核與平臺風險控制補充協(xié)議
- 電商平臺移動端性能優(yōu)化補充協(xié)議
- 異性員工戀愛關(guān)系忠誠度監(jiān)督與交往準則協(xié)議
- 夫妻道德約束與忠誠責任履行協(xié)議
- 《建筑施工現(xiàn)場環(huán)境與衛(wèi)生標準》JGJ146-2013
- 水泵房設(shè)施設(shè)備巡檢標準記錄表
- 2024年浙江省中考科學試卷
- 醫(yī)學教材 《瘧疾》課件
- 比較思想政治教育智慧樹知到期末考試答案章節(jié)答案2024年西南大學
- JG-T+100-1999塔式起重機操作使用規(guī)程
- 山東省濟南市高新區(qū)2023-2024學年八年級下學期期末物理試題
- DLT 5285-2018 輸變電工程架空導線(800mm以下)及地線液壓壓接工藝規(guī)程
- 中國兔子行業(yè)上下游產(chǎn)業(yè)鏈全景、發(fā)展歷程回顧及市場前景預測
- 急產(chǎn)分娩應急演練方案
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
評論
0/150
提交評論