摄影测量单像空间后方交会C#程序代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/***********Àಿ·Ö*************/usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceGeoMatics{classscale{structimage_point//Ò»¸öÏñµã½á¹¹£¬°üº¬Ïñµã×ø±êºÍµØÃæµã×ø±ê{publicdoublex;publicdoubley;publicdoubleX;publicdoubleY;publicdoubleZ;}privatedoublef;//Ö÷¾àprivatedoubleu;//uΪÍⷽλԪËØ£¬ÏÂÃæ5¸öÏàͬprivatedoublew;privatedoublek;privatedoubleXs;privatedoubleYs;privatedoubleZs;privateimage_point[]p=newimage_point[4];//Ëĸö¿ØÖƵãprivatedouble[]R=newdouble[9];//Ðýת¾ØÕóprivatedouble[]a=newdouble[8];//Ïñµã×ø±ê½üËÆÖµprivatedouble[,]A=newdouble[8,6];//Îó²î·½³ÌʽϵÊýprivatedouble[]L=newdouble[8];//Îó²î·½³Ìʽ³£ÊýÏîprivateintcount=0;//ͳ¼Æ´ú´ÎÊýpublicscale(doubleg,double[]q)//¹¹Ô캯Êý£¬³õʼ»¯¸÷±äÁ¿,µ¥Î»m{f=g;for(inti=0;i4;i++){intj=i*5;p[i].x=q[j];p[i].y=q[j+1];p[i].X=q[j+2];p[i].Y=q[j+3];p[i].Z=q[j+4];}doubleave=0,sum=0;//Çó±ÈÀý³ß·Öĸfor(inti=0;i3;i++){for(intj=i+1;j4;j++){sum+=Math.Sqrt(Math.Pow(p[i].X-p[j].X,2)+Math.Pow(p[i].Y-p[j].Y,2))/Math.Sqrt(Math.Pow(p[i].x-p[j].x,2)+Math.Pow(p[i].y-p[j].y,2));}}ave=sum/6;u=0;//¸ø¶¨ÍⷽλԪËصijõʼֵ,½Ç¶È¾ùÉèÖÃΪ0w=0;k=0;Xs=(p[0].X+p[1].X+p[2].X+p[3].X)/4;//XsΪËĸö¿ØÖƵãXµÄƽ¾ùÖµ£¬YsÀàËÆYs=(p[0].Y+p[1].Y+p[2].Y+p[3].Y)/4;Zs=(p[0].Z+p[1].Z+p[2].Z+p[3].Z)/4+ave*f;}privatedoublesin(doublem)//ÕýÏÒ£¬Îª¼ò»¯¶øд,ÏÂͬ{returnMath.Sin(m);}privatedoublecos(doublem){returnMath.Cos(m);}privatevoidcalcos()//¼ÆËãÐýת¾ØÕó{R[0]=cos(u)*cos(k)-sin(u)*sin(w)*sin(k);R[1]=-cos(u)*sin(k)-sin(u)*sin(w)*cos(k);R[2]=-sin(u)*cos(w);R[3]=cos(w)*sin(k);R[4]=cos(w)*cos(k);R[5]=-sin(w);R[6]=sin(u)*cos(k)+cos(u)*sin(w)*sin(k);R[7]=cos(u)*sin(w)*cos(k)-sin(u)*sin(k);R[8]=cos(u)*cos(w);}privatevoidcalabout()//Ïñµã×ø±êµÄ½üËÆÖµ{inti;for(i=0;i4;i++){a[2*i]=-f*(R[0]*(p[i].X-Xs)+R[3]*(p[i].Y-Ys)+R[6]*(p[i].Z-Zs))/(R[2]*(p[i].X-Xs)+R[5]*(p[i].Y-Ys)+R[8]*(p[i].Z-Zs));a[2*i+1]=-f*(R[1]*(p[i].X-Xs)+R[4]*(p[i].Y-Ys)+R[7]*(p[i].Z-Zs))/(R[2]*(p[i].X-Xs)+R[5]*(p[i].Y-Ys)+R[8]*(p[i].Z-Zs));}}privatevoidcalxx()//Îó²î·½³ÌʽµÄϵÊýºÍ³£ÊýÏî{inti;for(i=0;i4;i++)//ϵÊý{doublez=R[2]*(p[i].X-Xs)+R[5]*(p[i].Y-Ys)+R[8]*(p[i].Z-Zs);intn=i*2;A[n,0]=(R[0]*f+R[2]*p[i].x)/z;A[n,1]=(R[3]*f+R[5]*p[i].x)/z;A[n,2]=(R[6]*f+R[8]*p[i].x)/z;A[n,3]=p[i].y*sin(w)-f*cos(w)*cos(k)-p[i].x/f*(p[i].x*cos(w)*cos(k)-p[i].y*cos(w)*sin(k));A[n,4]=-f*sin(k)-p[i].x/f*(p[i].x*sin(k)+p[i].y*cos(k));A[n,5]=p[i].y;A[n+1,0]=(R[1]*f+R[2]*p[i].y)/z;A[n+1,1]=(R[4]*f+R[5]*p[i].y)/z;A[n+1,2]=(R[7]*f+R[8]*p[i].y)/z;A[n+1,3]=-p[i].x*sin(w)+f*cos(w)*sin(k)-p[i].x/f*(p[i].x*cos(w)*cos(k)-p[i].y*sin(k)*cos(w));A[n+1,4]=-f*cos(k)-p[i].y/f*(p[i].x*sin(k)+p[i].y*cos(k));A[n+1,5]=-p[i].x;}for(i=0;i4;i++)//³£ÊýÏî{L[2*i]=p[i].x-a[2*i];L[2*i+1]=p[i].y-a[2*i+1];}}privatedoublecalAdd(){double[,]temp=newdouble[6,6];//AµÄתÖÃÓëAÏà³ËµÄ»ýdouble[,]ANew=newdouble[6,8];//AµÄתÖÃdouble[]t=newdouble[6];//AµÄתÖÃÓëLÏà³ËµÄ»ýdouble[]X=newdouble[6];//¸ÄÕýÊýinti,j,n;for(i=0;i8;i++)//ÇóAµÄתÖÃANew{for(j=0;j6;j++){ANew[j,i]=A[i,j];}}for(i=0;i6;i++)//ÇóAµÄתÖÃÓëAÏà³ËµÄ»ýtemp{for(j=0;j6;j++){temp[i,j]=0;for(n=0;n8;n++){temp[i,j]+=ANew[i,n]*A[n,j];}}}MATINV(temp);//tempµÄÄ棬±£´æÔÚ±¾Éí¾ØÕóÖÐfor(i=0;i6;i++)//ÇóAµÄתÖÃÓëLµÄ³Ë»ýt{t[i]=0;for(j=0;j8;j++){t[i]+=ANew[i,j]*L[j];}}for(i=0;i6;i++)//Çó¸ÄÕýÊýX{X[i]=0;for(j=0;j6;j++){X[i]+=temp[i,j]*t[j];}}Xs+=X[0];//ÍⷽλԪËسõʼֵ¼ÓÉϸÄÕýÊýYs+=X[1];Zs+=X[2];u+=X[3];w+=X[4];k+=X[5];returnmaxone(X);//·µ»ØÅжÏÌõ¼þ,×î´óµÄ¸ÄÕýÊýµÄÖµ}publicvoidmakeSure()//¼ÆËãÁ÷³Ì¿ØÖƺ¯Êý{calcos();calabout();calxx();doubleVALUE=calAdd();count++;while(VALUE0.00001)//µü´úÖÁ×î´ó¸ÄÕýÊý=0.00001Ϊֹ{calcos();calabout();calxx();VALUE=calAdd();count++;}}privatevoidMATINV(double[,]c)//Çó6½×¾ØÕóµÄÄæ{inti,j,h,m;constintn=6;doublel;double[,]q=newdouble[n,12];for(i=0;in;i++)//¹¹Ôì¸ß˹¾ØÕó{for(j=0;jn;j++){q[i,j]=c[i,j];}}for(i=0;in;i++)//µ¥Î»¾ØÕó{for(j=n;j12;j++){if(i+6==j)q[i,j]=1;elseq[i,j]=0;}}for(h=0,m=0;mn-1;m++,h++)//ÏûÈ¥¶Ô½ÇÏßÒÔϵÄÊý¾Ý{for(i=m+1;in;i++){if(q[i,h]==0d)continue;l=q[m,h]/q[i,h];for(j=0;j12;j++){q[i,j]*=l;q[i,j]-=q[m,j];}}}for(h=n-1,m=n-1;m0;m--,h--)//ÏûÈ¥¶Ô½ÇÏßÒÔÉϵÄÊý¾Ý{for(i=m-1;i=0;i--){if(q[i,h]==0d)continue;l=q[m,h]/q[i,h];for(j=0;j12;j++){q[i,j]*=l;q[i,j]-=q[m,j];}}}for(i=0;in;i++)//½«¶Ô½ÇÏßÉÏÊý¾Ý»¯Îª1{l=1.0/q[i,i];for(j=0;j12;j++){q[i,j]*=l;}}for(i=0;in;i++)//ÌáÈ¡Äæ¾ØÕó{for(j=0;jn;j++){c[i,j]=q[i,j+6];}}}privatedoublemaxone(double[]Arr)//·µ»ØÁù¸öÔªËØÖеÄ×î´óÖµ{double[]ARR=newdouble[6];for(inti=0;i6;i++){ARR[i]=Arr[i];if(ARR[i]0d)//È¡ÕýARR[i]=-ARR[i];}Array.Sort(ARR,0,6);returnARR[5];}publicintCOUNT{get{returncount;}}publicdoubleU{get{returnu;}}publicdoubleW{get{returnw;}}publicdoubleK{get{returnk;}}publicdoubleXS{get{returnXs;}}publicdoubleYS{get{returnYs;}}publicdoubleZS{get{returnZs;}}}}/**********Àಿ·Ö½áÊø**********//**********´°Ìå´úÂ벿·Ö**********/usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.OleDb;usingSystem.Diagnostics;usingSystem.IO;namespaceGeoMatics{publicpartialclassForm1

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功