![單片空間后方交會(huì)C程序_第1頁](http://file4.renrendoc.com/view/3be0194269eabdb88892d1fbdd320c5e/3be0194269eabdb88892d1fbdd320c5e1.gif)
![單片空間后方交會(huì)C程序_第2頁](http://file4.renrendoc.com/view/3be0194269eabdb88892d1fbdd320c5e/3be0194269eabdb88892d1fbdd320c5e2.gif)
![單片空間后方交會(huì)C程序_第3頁](http://file4.renrendoc.com/view/3be0194269eabdb88892d1fbdd320c5e/3be0194269eabdb88892d1fbdd320c5e3.gif)
![單片空間后方交會(huì)C程序_第4頁](http://file4.renrendoc.com/view/3be0194269eabdb88892d1fbdd320c5e/3be0194269eabdb88892d1fbdd320c5e4.gif)
![單片空間后方交會(huì)C程序_第5頁](http://file4.renrendoc.com/view/3be0194269eabdb88892d1fbdd320c5e/3be0194269eabdb88892d1fbdd320c5e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
#include"stdio.h"#include"stdlib.h"#include"math.h"#include<iostream.h>#definef153.840e-3#definex00#definey00#definem02500#definepi3.1415926voidMatrixReverse(double*nm,double*m,intr,intc){//求轉(zhuǎn)置矩陣 inti,j; for(i=0;i<r;i++) { for(j=0;j<c;j++) { *(nm+j*r+i)=*(m+i*c+j); } }}boolRowMul(double*m,intr,intc,doubleratio){//求矩陣的倍數(shù) inti; for(i=0;i<c;i++) { *(m+r*c+i)*=ratio; } returntrue;}boolRowSwap(double*m,intr1,intr2,intc){//矩陣行交換 inti; doubletemp; for(i=0;i<c;i++) { temp=*(m+r1*c+i); *(m+r1*c+i)=*(m+r2*c+i); *(m+r2*c+i)=temp; } returntrue;}boolRowMinus(double*m,intr1,intr2,intc){//矩陣行相減 inti; for(i=0;i<c;i++) { *(m+r1*c+i)-=*(m+r2*c+i); } returntrue;}voidMatrixPlus(double*m1,double*m2,intr,intc){//矩陣相加 inti,j; for(i=0;i<r;i++) for(j=0;j<c;j++) { *(m1+i*c+j)+=*(m2+i*c+j); }}voidMatrixMul(double*nm,double*m1,double*m2,intr,intc,intcr){//求兩個(gè)矩陣的積 inti,j,k; for(i=0;i<r;i++) for(j=0;j<c;j++) { *(nm+i*c+j)=0; for(k=0;k<cr;k++) { *(nm+i*c+j)+=*(m1+i*cr+k)**(m2+k*c+j); } }}voidMatrixInverse(double*nm,double*m,intrc){//求矩陣的逆 double*nme=newdouble[2*rc*rc]; inti,j; for(i=0;i<rc;i++) { for(j=0;j<2*rc;j++) { if(i==(j-rc))*(nme+i*2*rc+j)=1; elseif(j<rc)*(nme+i*2*rc+j)=*(m+i*rc+j); else*(nme+i*2*rc+j)=0; } } for(i=0;i<rc;i++) { if(*(nme+i*2*rc+i)==0) { for(j=i;j<rc;j++) { if(*(nme+j*2*rc+i)) { RowSwap(nme,i,j,2*rc); break; } } } doubleratio; for(j=i+1;j<rc;j++) { if(*(nme+j*2*rc+i)) { ratio=*(nme+i*2*rc+i)/(*(nme+j*2*rc+i)); RowMul(nme,j,2*rc,ratio); RowMinus(nme,j,i,2*rc); } } } for(i=0;i<rc;i++) { doubleratio; for(j=i+1;j<rc;j++) { if(*(nme+(rc-1-j)*2*rc+(rc-1-i))) { ratio=*(nme+(rc-1-i)*2*rc+(rc-1-i))/(*(nme+(rc-1-j)*2*rc+(rc-1-i))); RowMul(nme,(rc-1-j),2*rc,ratio); RowMinus(nme,(rc-1-j),(rc-1-i),2*rc); } } } for(i=0;i<rc;i++) { doubleratio; ratio=1/(*(nme+i*2*rc+i)); RowMul(nme,i,2*rc,ratio); } for(i=0;i<rc;i++) for(j=0;j<rc;j++) *(nm+i*rc+j)=*(nme+i*2*rc+(rc+j)); delete[]nme;}voidmain(){ intcounter=0; FILE*fp=fopen("考試所用數(shù)據(jù).DAT","r"); fscanf(fp,"%d",&counter); doublexx[100],yy[100],XX[100],YY[100],ZZ[100],PID[100]; for(intc=0;c<counter;c++) { fscanf(fp,"%lf%lf%lf%lf%lf%lf",&PID[c],&xx[c],&yy[c],&YY[c],&XX[c],&ZZ[c]); xx[c]/=1000; yy[c]/=1000; } fclose(fp); printf("像片的內(nèi)方位元數(shù):x0=y0=0;航攝儀焦距:f=153.84mm。\n攝影比例尺:1/m=1/2500\n\n"); doublephi,omega,kappa,XS,YS,ZS; doubledphi,domega,dkappa; phi=omega=kappa=XS=YS=ZS=0; intj; for(j=0;j<counter;j++) { XS+=XX[j]; YS+=YY[j]; } XS/=counter;//初始值 YS/=counter; ZS+=f*m0; dphi=domega=dkappa=1; intcount=0; while((dphi>0.00003||domega>0.00003||dkappa>0.00003)) {//迭代驗(yàn)證 count++; inti; doubleATA[36]={0}; doubleATL[6]={0}; doublea1=cos(phi)*cos(kappa)-sin(phi)*sin(omega)*sin(kappa); doublea2=-cos(phi)*sin(kappa)-sin(phi)*sin(omega)*cos(kappa); doublea3=-sin(phi)*cos(omega); doubleb1=cos(omega)*sin(kappa); doubleb2=cos(omega)*cos(kappa); doubleb3=-sin(omega); doublec1=sin(phi)*cos(kappa)+cos(phi)*sin(omega)*sin(kappa); doublec2=-sin(phi)*sin(kappa)+cos(phi)*sin(omega)*cos(kappa); doublec3=cos(phi)*cos(omega); for(i=0;i<counter;i++) {//逐點(diǎn)法化 doubleX,Y,Z,x,y; doublefX,fY,fZ; doubleid; id=PID[i]; x=xx[i]; y=yy[i]; X=XX[i]; Y=YY[i]; Z=ZZ[i]; fX=a1*(X-XS)+b1*(Y-YS)+c1*(Z-ZS); fY=a2*(X-XS)+b2*(Y-YS)+c2*(Z-ZS); fZ=a3*(X-XS)+b3*(Y-YS)+c3*(Z-ZS); doubleA[12],AT[12],L[2],temp1[36],temp2[6]; L[0]=x+f*fX/fZ; L[1]=y+f*fY/fZ; A[0]=(a1*f+a3*(x-x0))/(fZ); A[1]=(b1*f+b3*(x-x0))/(fZ); A[2]=(c1*f+c3*(x-x0))/(fZ); A[3]=(y-y0)*sin(omega)-((x-x0)*((x-x0)*cos(kappa)-(y-y0)*sin(kappa))/f+f*cos(kappa))*cos(omega); A[4]=-f*sin(kappa)-(x-x0)*((x-x0)*sin(kappa)+(y-y0)*cos(kappa))/f; A[5]=y-y0; A[6]=(a2*f+a3*(y-y0))/(fZ); A[7]=(b2*f+b3*(y-y0))/(fZ); A[8]=(c2*f+c3*(y-y0))/(fZ); A[9]=-(x-x0)*sin(omega)-((y-y0)*((x-x0)*cos(kappa)-(y-y0)*sin(kappa))/f-f*sin(kappa))*cos(omega); A[10]=-f*cos(kappa)-(y-y0)*((x-x0)*sin(kappa)+(y-y0)*cos(kappa))/f; A[11]=x0-x; MatrixReverse(AT,A,2,6); MatrixMul(temp1,AT,A,6,6,2);//求一個(gè)點(diǎn)的ATA MatrixMul(temp2,AT,L,6,1,2);//求一個(gè)點(diǎn)的ATL MatrixPlus(ATA,temp1,6,6);//系數(shù)矩陣相加 MatrixPlus(ATL,temp2,6,1); } //解法方程 doubletemp[6],temp0[36]; MatrixInverse(temp0,ATA,6); MatrixMul(temp,temp0,ATL,6,1,6); XS+=temp[0]; YS+=temp[1]; ZS+=temp[2]; phi+=temp[3]; omega+=temp[4]; kappa+=temp[5]; if(temp[3]<0) dphi=temp[3]*(-1); elsedphi=temp[3]; if(temp[4]<0) domega=temp[4]*(-1); elsedomega=temp[4]; if(temp[5]<0) dkappa=temp[5]*(-1); elsedkappa=temp[5]; //精度評(píng)定 doubleMM[6],VTV[1],M0; for(i=0;i<6;i++) { MM[i]=sqrt(temp0[i*6+i]); } VTV[0]=0; for(i=0;i<counter;i++) {//VTV doubleX,Y,Z,x,y; doublefX,fY,fZ; doubletempV[2],tempVT[2],tempVTV[1]; x=xx[i]; y=yy[i]; X=XX[i]; Y=YY[i]; Z=ZZ[i]; fX=a1*(X-XS)+b1*(Y-YS)+c1*(Z-ZS); fY=a2*(X-XS)+b2*(Y-YS)+c2*(Z-ZS); fZ=a3*(X-XS)+b3*(Y-YS)+c3*(Z-ZS); tempV[0]=x+f*fX/fZ; tempV[1]=y+f*fY/fZ; MatrixReverse(tempVT,tempV,2,1); MatrixMul(tempVTV,tempVT,tempV,1,1,2); MatrixPlus(VTV,tempVTV,1,1); } M0=sqrt(VTV[0]/(counter*2-6)); printf("輸入坐標(biāo)點(diǎn)個(gè)數(shù):%d\n\n",counter); printf("計(jì)算結(jié)果:\n(1)迭代次數(shù):%d\n",count); printf("(2)外方位元素計(jì)算值:\nphi=%lfomega=%lfkappa=%lf\nXs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀川油泵項(xiàng)目申請(qǐng)報(bào)告模板參考
- 2025年正在改制行業(yè)深度研究分析報(bào)告
- 助貸服務(wù)合同范本
- 2025年度腳手架施工質(zhì)量監(jiān)督與驗(yàn)收合同
- 2025年度建筑勞務(wù)市場(chǎng)合同示范文本匯編
- 2025年度國際貨物保險(xiǎn)風(fēng)險(xiǎn)評(píng)估與管理合同
- 別克車銷售合同范本
- 2025年度攪拌樁施工設(shè)備租賃合同
- 化肥包裝租賃合同范例
- 2025年度創(chuàng)意產(chǎn)業(yè)園區(qū)租賃運(yùn)營管理合同
- 中央2025年交通運(yùn)輸部所屬事業(yè)單位招聘261人筆試歷年參考題庫附帶答案詳解
- 2025年上半年上半年重慶三峽融資擔(dān)保集團(tuán)股份限公司招聘6人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計(jì)規(guī)范
- 華銀鋁項(xiàng)目氧化鋁系統(tǒng)總體投料試車方案
- 2023年青島遠(yuǎn)洋船員職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- 2023年衛(wèi)生院崗位大練兵大比武競(jìng)賽活動(dòng)實(shí)施方案
- 2023年浙江省初中學(xué)生化學(xué)競(jìng)賽初賽試卷
- 遼海版小學(xué)五年級(jí)美術(shù)下冊(cè)全套課件
- 專題7閱讀理解之文化藝術(shù)類-備戰(zhàn)205高考英語6年真題分項(xiàng)版精解精析原卷
- 2022年廣東省10月自考藝術(shù)概論00504試題及答案
- 隧道二襯承包合同參考
評(píng)論
0/150
提交評(píng)論