数据结构课程设计——导线网平差程序的设计与实现

上传人:r****d 文档编号:121147773 上传时间:2022-07-18 格式:DOC 页数:40 大小:81.50KB
返回 下载 相关 举报
数据结构课程设计——导线网平差程序的设计与实现_第1页
第1页 / 共40页
数据结构课程设计——导线网平差程序的设计与实现_第2页
第2页 / 共40页
数据结构课程设计——导线网平差程序的设计与实现_第3页
第3页 / 共40页
点击查看更多>>
资源描述
数据结构课程设计导线网平差程序的设计与实现 设计二:导线网平差程序的设计与实现 一、设计目的 立足于数据结构与测绘软件开发这一课程的课堂教学及其实验课程设计,为着实提高学生基于计算机辅助的方式切实解决工程实际问题的动手能力,通过本实习,一方面,使学生深入了解课堂所学知识,另一方面,通过实践掌握测绘行业软件设计与开发的基本方法,深刻掌握矩阵运算、曲线/曲面拟合的数值解法,掌握不同类型的典型测绘软件设计方法,使得学生初步具备编写测绘软件常用算法的能力以及开发中小规模测绘专业软件的能力。 有导线网如图,观测了14条边长和16 个转折角,已知测角精度? ,测边精度 为?S?mm)。已知A、B、C、D、E、F点的坐标(无误差),如下表: 三、关键问题描述 3.1 未知点近似坐标计算 平面控制网进行平差计算时需要计算未知点的近似坐标 1、2点的坐标已知,并观测了1-2、1-3的夹角,根据这些数据可以求出3号点坐标 根据1、2两点的坐标,可以反算出1、2方向的方位角T12,3号点的坐标为 式子中S13为观测边长,?为观测角度 2.计算流程 从读入的数据循环计算未知点的坐标,已计算出的坐标当做已知坐标的点处理参加下次计算,以此类推,逐步计算出未知点的坐标 CMatrix CPlaneNetAdjust:XYJS() CMatrix _XYJS(Pnumber,2); double T12; for(int i=0;i<Tnumber;i+) int k1=cezhani; double x1=xyk1.X; double y1=xyk1.Y; if(x1=0) continue; int k2=huoshii; int k3=qianshii; if(xyk2.X>0&&xyk2.Y>0) T12=GetT12(k1,k2); double s12=Gets12(k1,k2); double s13=Gets12(k1,k3); double T13=T12+guancejiaoi.Guancezhi; double dx=s13*cos(T13); double dy=s13*sin(T13); xyk3.X=xyk1.X+dx; xyk3.Y=xyk1.Y+dy; for(int i=0;i<Pnumber;i+) double temp1=xyi.X; double temp2=xyi.Y; _XYJS.setValue(i,0,temp1); _XYJS.setValue(i,1,temp2); ?x3?x1?S13cos(T12?)?y?y?Ssin(T?)12?3113 return _XYJS; 3.2 误差方程列立 平面控制网的误差方程都是非线性方程,必须引入参数近似值将误差方程线性化, YB?Y?YA?Y?DD?L?arctan?arctan1DBDA XB?XDXA?XD 22S ?X?D?XA?Y?YDA ?的充分近似值 X0,x?是微小量,在按台劳公式展开取X 时可以略去二次和二次以上的项,而只取至一次项,于是可对非线性平差值观测方程式线性化,于是有如下的式子 对于观测角的改正数有 000 ?Yjk?X0?Yjk?Yjkjk?jk?j?j? ?xyxykk(S)(S)(S)(S)jkjkjkjk 000?Yjh?X0?Yjh?Yjhjh ?jh?j?j?xyxy20202h02h(S0)(S)(S)(S) jhjhjhjh 00 ?X0?Yjk?X0?Yjk?jkjk?j?k?k?vi ?02xj?yxy?020202(S)(S)(S)(S)?jkjkjkjk? 00? ?X0?Yjh?X0?Yjh?jhjh0?x?yj?02xh?yh?(?0jh?jk?Li)02j0202 ?(Sjh)(Sjh)(Sjh)?(Sjh)? ? 对于边长观测值的改正数有 0000 ?Xjk?Yjk?Xjk?Yjkv xx?j?0y?j?k?0y?k?lili?Li?S0i?00jkSjkSjkSjkSjk ?(X0?X0)2?(Y0?Y0)2S0jkkjkj 2.实现算法如下: CMatrix CPlaneNetAdjust:B() CMatrix _B1(Lnumber,Pnumber*2); double a; double b; double c; double d; double m; double n; double m1; double n1; for(int i=0;i<Snumber;i+) int k1=starti; int k2=endi; double dx=xyk2.X-xyk1.X; double dy=xyk2.Y-xyk1.Y; a=-dx/Gets12(k1,k2); b=-dy/Gets12(k1,k2); if(k1<knPnumber) _B1.setValue(i,2*k1,0); _B1.setValue(i,2*k1+1,0); else _B1.setValue(i,2*k1,a); _B1.setValue(i,2*k1+1,b); if(k2<knPnumber) _B1.setValue(i,2*k2,0); _B1.setValue(i,2*k2+1,0); else _B1.setValue(i,2*k2,-a); _B1.setValue(i,2*k2+1,-b); for(int i=0;i<Tnumber;i+) const double p=206.265; int k1=cezhani; int k3=huoshii; int k2=qianshii; double dx12=xyk2.X-xyk1.X; double dy12=xyk2.Y-xyk1.Y; double dx13=xyk3.X-xyk1.X; double dy13=xyk3.Y-xyk1.Y; c=(p*dx13/Gets12(k1,k3)/Gets12(k1,k3)-p*dx12/Gets12(k1,k2)/Gets12(k1,k2); c=-c; d=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3)+p*dy12/Gets12(k1,k2)/Gets12(k1,k2); d=-d; m=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3); m=-m; n=p*dx13/Gets12(k1,k3)/Gets12(k1,k3); n=-n; m1=p*dy12/Gets12(k1,k2)/Gets12(k1,k2); m1=-m1; n1=-p*dx12/Gets12(k1,k2)/Gets12(k1,k2); n1=-n1; if(k1<knPnumber) _B1.setValue(i+Snumber,2*k1,0); _B1.setValue(i+Snumber,2*k1+1,0); else if(k1>=knPnumber) _B1.setValue(i+Snumber,2*k1,c); _B1.setValue(i+Snumber,2*k1+1,d); if(k2<knPnumber) _B1.setValue(i+Snumber,2*k2,0); _B1.setValue(i+Snumber,2*k2+1,0); else if(k2>=knPnumber) _B1.setValue(i+Snumber,2*k2,m1); _B1.setValue(i+Snumber,2*k2+1,n1); if(k3<knPnumber) _B1.setValue(i+Snumber,2*k3,0); _B1.setValue(i+Snumber,2*k3+1,0); else if(k3>=knPnumber) _B1.setValue(i+Snumber,2*k3,m); _B1.setValue(i+Snumber,2*k3+1,n); CMatrix _B(Lnumber,2*(Pnumber-knPnumber); for(int i=0;i<_B1.getRow();i+) for(int j=2*knPnumber;j<2*Pnumber;j+) double temp=_B1.getValue(i,j); _B.setValue(i,(j-2*knPnumber),temp); return _B; 3.3 法方程构建与解算 误差方程系数 V?Bx?l 构成法方程 TT BPBx?BPl?0 计算L CMatrix CPlaneNetAdjust:L() CMatrix _L(Lnumber,1); double l; double s; double s0; for(int i=0;i<Snumber;i+) int k1=starti; int k2=endi; s=Gets12(k1,k2); double dx=xyk2.X-xyk1.X; double dy=xyk2.Y-xyk1.Y; s0=sqrt(dx*dx+dy*dy); l=s-s0; _L.setValue(i,0,l*1000); /cout<<l<<endl; for(int i=0;i<Tnumber;i+) const double pi=2*3.1415926; double A12; double A13; return _L; 计算权阵P CMatrix CPlaneNetAdjust:P() CMatrix _P(Lnumber,Lnumber); for(int i=0;i<Snumber;i+) double temp=temp=Cjwucha*Cjwucha/(1*sqrt(bianchangi.Len)/(1*sqrt(bianchangi.Len); _P.setValue(i,i,temp); for(int i=Snumber;i<Lnumber;i+) _P.setValue(i,i,Cjwucha*Cjwucha/(Cjwucha*Cjwucha); return _P; double A; int k1=cezhani; int k2=huoshii; int k3=qianshii; A12=GetT12(k1,k2); A13=GetT12(k1,k3); A=GetA(k1,k2,k3); l=A13-A12; if(l<0) l=pi+l; if(l>=pi) l=l-pi; l=l-A; /cout<<rad_dms(A12)<< <<rad_dms(A13)<< <<rad_dms(l)<<endl; _L.setValue(i+Snumber,0,rad_dms(l); <<rad_dms(A)<< 3.4 精度估计 间接平差与条件平差虽采用了不同的函数模型,但它们是在相同的最小乘原理下进行的,所 T以两法的平差结果总是相等的,这是因为在满足 VPV?min条件下的V是唯一确定?L?V不因方法不同而异。 的,故平差值 L2T2 单位权方差 ? ? 0 计算式仍然是 V PV 除以其自由度,即 0 的估值 ? 在间接平差中, X ? xQQ?X? ?进一步有 x 点位误差 ?1T?1?1QX?X?NbbBPQPBNbb?Nbb 1 )?P?0(Qxx?Qyy)?0(2221Px?Py 椭圆参数E ?0(Qxxcos?E?Qyysin?E?Qxysin2?E) E? 椭圆参数F 2222 ?0(Qxxcos?F?Qyysin?F?Qxysin2?F) F? 4.实现代码 2222 void CPlaneNetAdjust:ErrorEllipse() CMatrix _Q=Q(); double m2=Cjwucha*Cjwucha; cout<<endl<<endl<< = 点位误差椭圆 =<<endl; cout<< 点名 点位误差 椭圆长半轴 椭圆短半轴 长轴方 位角 <<endl; for(int i=0;i<(Pnumber-knPnumber); i+) double mx2=_Q.getValue(2*i,2*i)*m2; /x坐标中误差的平方 double my2=_Q.getValue(2*i+1,2*i+1)*m2; /y坐标中误差的平方 double mxy=_Q.getValue(2*i,2*i+1)*m2; /xy坐标的协方差 double K=sqrt(mx2-my2)*(mx2-my2)+4.0*mxy*mxy); double E=sqrt(0.5*(mx2+my2+K); /长轴 double F=sqrt(0.5*(mx2+my2-K); /短轴 double A; /误差椭圆长轴的方位角 if(fabs(mxy)<1.0e-14) / mxy = 0 if(mx2>my2) A=0.0; else A=0.5*PAI; else / mxy 0 A=atan( (E*E-mx2)/mxy); if(A<0.0)A+=PAI; cout<<endl; cout<< <<Pnamei+knPnumber<< <<Cjwucha*sqrt(_Q.getValue(2*i,2*i)+_Q.getValue(2*i+1,2*i+1) << <<E<< <<F<< <<rad_dms(A); 3.5 程序设计流程图 四、算法运行结果与分析 五、小结 通过这次课程设计,我又对整本书有了一个更深的理解。其实课程设计就是将我们所学的理论知识应用于实践的过程,在这一过程中,进一步掌握测量平差的基本原理和基本公式,并熟悉测量数据处理的基本技能和计算方法。 这门课程与计算机程序完美地结合。这便要求我们在原有的解题思路中加入C+语言程序,并让它来帮助我们解决矩阵的复杂运算。既然用到了程序,我们就必须保证其运算的简洁性、正确性,尤其是在编写过程中要认真检查,为程序顺利运行打下基础。另外在各个子程序调用过程中,我们要充分考虑其顺序性并反复调试,以便得到理想结果。 尽管在这次课程设计中遇到了很多困难,但我却得到了不少收获,并培养了自己正确应用公式、综合分析和解决问题的能力,同时也为今后步入社会打下了一定的基础。另外,我们还要学会综合利用自身所学的知识,并将它们联系起来帮助自己有效地解决实际中的问题。 总之,在这次课程设计中我不但过了比较充实的一周,还收获了不少知识。我或多或少明白,编程是一个循序渐进的过程,我想真的能够在这方面有所突破,就更要花时间多花工夫 六、附录(完整代码) 在头文件下 #include<iostream> #includeMatrix.h using namespace std; struct XY int Index; double X; double Y; ; struct Bianchang string startPoint; string endPoint; double Len; ; struct Guancejiao int Index; string Cezhan; string Huozhan; string Qianzhan; double Guancezhi; ; class CPlaneNetAdjust public: CPlaneNetAdjust(void); CPlaneNetAdjust(void); void Getdata();/获取数据 void Printdata();/数据显示 void outdata();/数据输出 CMatrix P();/计算权阵 CMatrix L();/l的计算 CMatrix B();/计算误差系数矩阵 CMatrix Q();/计算协因数阵 CMatrix XYJS();/计算近似坐标 CMatrix dx();/参数平差值 CMatrix V();/残差计算 void ErrorEllipse();/误差椭圆 double Compute_T12(int k1,int k2); protected : double dms_rad(double a); double rad_dms(double a); int GetDianhao(string dianming); string GetDiaming(int dianhao); double Gets12(int k1,int k2); double GetA(int k1,int k2,int k3); double GetT12(int k1,int k2); ; int Lnumber; int Snumber; int Tnumber; int Pnumber; int knPnumber; double Cjwucha; double Bcbiliwucha,Bcgudingwucha; XY *xy; Guancejiao *guancejiao; Bianchang *bianchang; CMatrix _XYJS; CMatrix _Q; CMatrix _B; CMatrix _P; CMatrix _L; CMatrix _dx; string *Pname; int *start; int *end; int *cezhan; int *huoshi; int *qianshi; 在文件下 #include stdafx.h #include PlaneNetAdjust.h #include<fstream> #include<iostream> #include<cctype> #include <iomanip> using namespace std; CPlaneNetAdjust:CPlaneNetAdjust(void) Lnumber=0; Snumber=0; Tnumber=0; Pnumber=0; knPnumber=0; CPlaneNetAdjust:CPlaneNetAdjust(void) delete Pname; delete xy; delete guancejiao; delete bianchang; delete start; delete end; double CPlaneNetAdjust:dms_rad(double a) /提取角度值的符号 double sign=(a<0.0) ? -1.0 : 1.0; a=fabs(a); /提取角度值的整度 int d=(int)(a+0.00001)/10000.0); a=a-d*10000.0; if(a<0.0) d=d-1; a=a+10000; /提取角度值的整分及秒值 int m=(int)(a+0.00001)/100.0); a=a-m*100; if(a<0.0) m=m-1; a=a+100.0; a=sign*(d*3600.0+m*60.0+a)/206264.806247096363; return a; / 将角度的弧度值化为度分秒连写的角度(double 型) double CPlaneNetAdjust:rad_dms(double a) a=a*206264.806247096363; double sign=(a<0.0) ? -1.0 : 1.0; a=fabs(a); int d=(int)(a/3600.0+0.0000001); a=a-d*3600.0; if(a<0.0) d=d-1; a=a+3600.0; int m=(int)(a/60.0+0.0001); a=a-m*60.0; if(a<0.0) m=m-1; a=a+60.0; a=d*10000.0+m*100.0+a; return a*sign; void CPlaneNetAdjust:Getdata() string file=; ifstream inFile;cout<<endl; cout<<请输入文件的位置和文件名:<<endl; cin>>file; cout<<endl; inFile.open(file,ios:in); if(!inFile) cout<<不能打开<<endl; exit(1); inFile>>Lnumber; inFile>>Pnumber; inFile>>knPnumber; inFile>>Snumber; inFile>>Tnumber; inFile>> Cjwucha>>Bcbiliwucha>>Bcgudingwucha; xy=new XYPnumber; Pname=new stringPnumber; for(int i=0;i<Pnumber;i+) inFile>>Pnamei; inFile>>xyi.X; inFile>>xyi.Y ; xyi.Index=i; bianchang=new BianchangSnumber; for(int i=0;i<Snumber;i+) inFile>>bianchangi.startPoint; inFile>>bianchangi.endPoint; inFile>>bianchangi.Len; start=new intSnumber; end=new intSnumber; for(int i=0;i<Snumber;i+) starti=GetDianhao(bianchangi.startPoint); endi=GetDianhao(bianchangi.endPoint); guancejiao=new GuancejiaoTnumber; double *dms=new doubleTnumber; for(int i=0;i<Tnumber;i+) inFile>>guancejiaoi.Cezhan; inFile>>guancejiaoi.Huozhan; inFile>>guancejiaoi.Qianzhan; inFile>>dmsi; guancejiaoi.Guancezhi=dms_rad(dmsi); guancejiaoi.Index=i; cezhan=new intTnumber; huoshi=new intTnumber; qianshi=new intTnumber; for(int i=0;i<Tnumber;i+) cezhani=GetDianhao(guancejiaoi.Cezhan); huoshii=GetDianhao(guancejiaoi.Huozhan); qianshii=GetDianhao(guancejiaoi.Qianzhan); cout<< 总点数:<<Pnumber<< 边长观测数:<<Snumber<< 角度观测数:<<Tnumber<<endl; /cout<< 测角中误差:<<Cjwucha<< 测边固定误差:<<Bcgudingwucha<< 测边比例误差:<<Bcbiliwucha <<endl<<endl; cout<<endl; <<guancejiaoi.Qianzhan << <<dmsi<<endl; int CPlaneNetAdjust:GetDianhao(string dianming) for(int i=0;i<Pnumber;i+) if(Pnamei=dianming) return i; return -1; string CPlaneNetAdjust:GetDiaming(int dianhao) return Pnamedianhao; double CPlaneNetAdjust:Gets12(int k1,int k2) for(int i=0;i<Snumber;i+) if(k1=starti&&k2=endi) return bianchangi.Len; if(k2=starti&&k1=endi) cout<<点的坐标(未知点坐标用0表示):<<endl; cout<<点号<< 点名<< X<< Y<<endl; cout<<setprecision(3)<<setiosflags (ios:fixed); for(int i=0;i<Pnumber;i+) cout<<i<< <<Pnamei<< <<xyi.X << <<xyi.Y <<endl; cout<<边长观测:<<endl; cout<<起点<< 终点<< 观测值<<endl; for(int i=0;i<Snumber;i+) cout<<bianchangi.startPoint << <<bianchangi.endPoint << <<bianchangi.Len<<endl; cout<<角度观测值:<<endl; cout<<测站<< 后视<< 前视<< 观测值<<endl; for(int i=0;i<Tnumber;i+) cout<<setprecision(4)<<setiosflags (ios:fixed); cout<<guancejiaoi.Cezhan<< <<guancejiaoi.Huozhan<< return bianchangi.Len; return -1; /找不到符合条件的角,返回负值 double CPlaneNetAdjust:GetA(int k1,int k2,int k3) for(int i=0;i<Tnumber;i+) if(k1=cezhani&&k2=huoshii&&k3=qianshii) return guancejiaoi.Guancezhi; if(k1=cezhani&&k3=huoshii&&k2=qianshii) return guancejiaoi.Guancezhi; return -1.0; /找不到符合条件的角,返回负值 CMatrix CPlaneNetAdjust:P() CMatrix _P(Lnumber,Lnumber); for(int i=0;i<Snumber;i+) double temp=temp=Cjwucha*Cjwucha/(1*sqrt(bianchangi.Len)/(1*sqrt(bianchangi.Len); _P.setValue(i,i,temp); for(int i=Snumber;i<Lnumber;i+) _P.setValue(i,i,Cjwucha*Cjwucha/(Cjwucha*Cjwucha); return _P; double CPlaneNetAdjust:GetT12(int k1,int k2) const double Pi=3.1415926; double dx=xyk2.X -xyk1.X ; double dy=xyk2.Y -xyk1.Y ; double T=atan2(dy,dx); if(T<0) T=T+2.0*Pi; return T; CMatrix CPlaneNetAdjust:XYJS() CMatrix _XYJS(Pnumber,2); double T12; for(int i=0;i<Tnumber;i+) int k1=cezhani; double x1=xyk1.X; double y1=xyk1.Y; if(x1=0) continue; int k2=huoshii; int k3=qianshii; if(xyk2.X>0&&xyk2.Y>0) T12=GetT12(k1,k2); double s12=Gets12(k1,k2); double s13=Gets12(k1,k3); double T13=T12+guancejiaoi.Guancezhi; double dx=s13*cos(T13); double dy=s13*sin(T13); xyk3.X=xyk1.X+dx; xyk3.Y=xyk1.Y+dy; for(int i=0;i<Pnumber;i+) double temp1=xyi.X; double temp2=xyi.Y; _XYJS.setValue(i,0,temp1); _XYJS.setValue(i,1,temp2); return _XYJS; CMatrix CPlaneNetAdjust:B() CMatrix _B1(Lnumber,Pnumber*2); double a; double b; double c; double d; double m; double n; double m1; double n1; for(int i=0;i<Snumber;i+) int k1=starti; int k2=endi; double dx=xyk2.X-xyk1.X; double dy=xyk2.Y-xyk1.Y; a=-dx/Gets12(k1,k2); b=-dy/Gets12(k1,k2); if(k1<knPnumber) _B1.setValue(i,2*k1,0); _B1.setValue(i,2*k1+1,0); else _B1.setValue(i,2*k1,a); _B1.setValue(i,2*k1+1,b); if(k2<knPnumber) _B1.setValue(i,2*k2,0); _B1.setValue(i,2*k2+1,0); else _B1.setValue(i,2*k2,-a); _B1.setValue(i,2*k2+1,-b); for(int i=0;i<Tnumber;i+) const double p=206.265; int k1=cezhani; int k3=huoshii; int k2=qianshii; double dx12=xyk2.X-xyk1.X; double dy12=xyk2.Y-xyk1.Y; double dx13=xyk3.X-xyk1.X; double dy13=xyk3.Y-xyk1.Y; c=(p*dx13/Gets12(k1,k3)/Gets12(k1,k3)-p*dx12/Gets12(k1,k2)/Gets12(k1,k2); c=-c; d=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3)+p*dy12/Gets12(k1,k2)/Gets12(k1,k2); d=-d; m=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3); m=-m; n=p*dx13/Gets12(k1,k3)/Gets12(k1,k3); n=-n; m1=p*dy12/Gets12(k1,k2)/Gets12(k1,k2); m1=-m1; n1=-p*dx12/Gets12(k1,k2)/Gets12(k1,k2); n1=-n1; if(k1<knPnumber) _B1.setValue(i+Snumber,2*k1,0); _B1.setValue(i+Snumber,2*k1+1,0); else if(k1>=knPnumber) _B1.setValue(i+Snumber,2*k1,c); _B1.setValue(i+Snumber,2*k1+1,d); if(k2<knPnumber) _B1.setValue(i+Snumber,2*k2,0); _B1.setValue(i+Snumber,2*k2+1,0); else if(k2>=knPnumber) _B1.setValue(i+Snumber,2*k2,m1); _B1.setValue(i+Snumber,2*k2+1,n1); if(k3<knPnumber) _B1.setValue(i+Snumber,2*k3,0); _B1.setValue(i+Snumber,2*k3+1,0); else if(k3>=knPnumber) _B1.setValue(i+Snumber,2*k3,m); _B1.setValue(i+Snumber,2*k3+1,n); CMatrix _B(Lnumber,2*(Pnumber-knPnumber); for(int i=0;i<_B1.getRow();i+) for(int j=2*knPnumber;j<2*Pnumber;j+) double temp=_B1.getValue(i,j); _B.setValue(i,(j-2*knPnumber),temp); return _B; CMatrix CPlaneNetAdjust:L() CMatrix _L(Lnumber,1); double l; double s; double s0; for(int i=0;i<Snumber;i+) int k1=starti; int k2=endi; s=Gets12(k1,k2); double dx=xyk2.X-xyk1.X; double dy=xyk2.Y-xyk1.Y; s0=sqrt(dx*dx+dy*dy); l=s-s0; _L.setValue(i,0,l*1000); /cout<<l<<endl; for(int i=0;i<Tnumber;i+) const double pi=2*3.1415926; double A12; double A13; double A; int k1=cezhani; int k2=huoshii; int k3=qianshii; A12=GetT12(k1,k2); A13=GetT12(k1,k3); A=GetA(k1,k2,k3); l=A13-A12; if(l<0) l=pi+l; if(l>=pi) l=l-pi; l=l-A; /cout<<rad_dms(A12)<< <<rad_dms(A13)<< <<rad_dms(l)<<endl; _L.setValue(i+Snumber,0,rad_dms(l); return _L; CMatrix CPlaneNetAdjust:Q() CMatrix N; N=B().transpose().operator*(P().operator*(B(); return N.inverse(); CMatrix CPlaneNetAdjust:dx() CMatrix W; W=B().transpose().operator*(P().operator*(L(); _dx=Q().operator*(W); return Q().operator*(W).operator*(0.001f); <<rad_dms(A)<< CMatrix CPlaneNetAdjust:V() CMatrix F; F=B().operator*(dx()-L(); return F; void CPlaneNetAdjust:ErrorEllipse() CMatrix _Q=Q(); double m2=Cjwucha*Cjwucha; cout<<endl<<endl<< = 点位误差椭圆 =<<endl; cout<< 点名 点位误差 椭圆长半轴 椭圆短半轴 长轴方 位角 <<endl; for(int i=0;i<(Pnumber-knPnumber); i+) double mx2=_Q.getValue(2*i,2*i)*m2; /x坐标中误差的
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


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

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


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