基于C#的空间任意角度直角坐标转换程序的设计与实现

2012-06-29 07:26邵成立王智
城市勘测 2012年4期
关键词:余弦直角坐标坐标系

邵成立,王智

(青岛市勘察测绘研究院,山东青岛 266032)

1 引言

在工程测量和工业测量领域,经常需要对不同的空间坐标系进行转换,如WGS-84坐标系和1954年北京坐标系、地方坐标系和工程坐标系相互转换,在摄影测量和GIS中,也经常要对不同视角的坐标系进行转换。以往的工作一般是采用布尔沙-沃尔夫等基于小角度的转换模型,或将大角度先转换为小角度再进行转换[1],或是做非线性处理[2,3],或是应用罗德里格矩阵进行坐标转换[4]。而在实际工程应用中,经常遇到大角度的空间直角坐标转换[5]。笔者根据方向余弦为参数、适用于任何角度旋转的空间直角坐标转换的算法用C#编写了计算程序,详细说明了程序设计和实现过程,并通过一个具体实例验证了此程序的可行性。

2 数学模型

设点A在空间直角坐标O-XYZ中的坐标为(Xa,Ya,Za),在空间直角坐标 O - X'Y'Z'中的坐标为(Xb,Yb,Zb),令 X'轴在 O -XYZ 中的方向余弦为(a1,b1,c1),Y'轴在 O -XYZ 中的方向余弦为(a2,b2,c2),Z'轴在O-XYZ中的方向余弦为(a3,b3,c3),而令X轴在O -X'Y'Z'中的方向余弦为(a1,a2,a3),Y 轴在 O -X'Y'Z'中的方向余弦为(b1,b2,b3),Z 轴在 O -X'Y'Z'中的方向余弦为(c1,c2,c3),O'点相对于O点的平移参数为(Xo,Yo,Zo),比例参数为 u。

图1 坐标转换模型示意图

则两个坐标系下同名点坐标可用矩阵表示为:

且旋转矩阵是正交矩阵,则满足下列条件:

对式(1)进行泰勒级数展开,可列出如下误差方程形式:

式中,Vi=[VXiVYiVZi]T

根据式(3)可列出如下条件方程:

其中X的含义同上,B和W分别为:

上述各式中,上标为0的数为近似值,dX0、dY0、dZ0、du0、da1、da2、da3、db1、db2、db3、dc1、dc2、dc3为改正数。按附有条件的间接平差解算式(3)和式(4),就可得到 X[6]。

3 程序设计与算例

笔者使用Visual C#.net 2005作为开发工具编制了程序。Visual C#.net 2005是.NET平台下最为强大的开发工具,它提供了包括设计、编码、编译调试和数据库连接操作等基本功能,以及基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具及性能评测报告等高级功能[7]。此程序主要实现两个功能:一是根据在两个坐标系中3个以上的公共点坐标计算转换参数,二是根据算出的转换参数实现对转换点在两个坐标系下进行转换。程序界面如图2所示。

图2 程序主界面

具体实现过程如下(仅列出部分代码加以说明):

(1)启动 Visual C#.net 2005,新建项目,选择“Windows”应用程序。如图1所示在窗体上添加相应的 Label、Button、TextBox、PictureBox 等控件,并修改相应的属性。程序中要用大量的矩阵运算,应添加矩阵类,双击Button控件,添加相应代码。

(2)TextBox里的值为String类型,应首先把它转化为double类型

(3)定义参数,并赋初值,定义所需的相应矩阵

(4)进行迭代运算

根据附有条件的间接平差分别给误差方程中的B、L以及条件方程中C、Wx矩阵赋值,并用矩阵类中的函数进行相应的计算。计算出参数改正值后使其加在初值上,迭代循环使用do…while()语句。While后面括号中的迭代条件这里取为旋转矩阵中的任何一个元素大于0.001。最后通过ToString()函数把结果转换为字符串类型并赋值到相应的TextBox里

(5)利用转换参数计算任意点的坐标转换值

为了检验该程序的效果,笔者在同济大学彰武路校区里用索佳Set220全站仪对一构件进行观测,采用坐标测量功能在两个任意假定的不同空间直角坐标系下对其表面采集了10个数据点,其观测结果如表1所示。

在两个不同的空间直角坐标系下的坐标观测值 表1

以点1~点4作为公共点利用该程序算出的转换参数为:

u=1.001760538 迭代次数n=4

利用这些转换参数可计算出各个点转换值,结果如表2所示。

实测值和转换值的比较 表2

计算结果表明,利用本文给出的程序能够较好的实现空间任意角度的不同直角坐标转换。

4 结语

基于13参数的空间直角坐标转换模型公式简单,且易于程序实现。其转换精度不仅和公共点个数有关而且和迭代条件有关。

[1]胡亚江,杨晓梅,沙月进.大欧拉角的空间直角坐标转换方法探讨[J].现代测绘,2006,11(6):10~12.

[2]胡志刚,花向红,李海英.基于同伦算法的非线性坐标转换模型研究[J].测绘工程,2008,17(6):24~28.

[3]周兴华,赵吉先.浅谈空间直角坐标系非线性坐标转换[J].水利科技与经济,2005,11(4):210~212.

[4]张卡,张道俊,盛业华等.三维坐标转换的两种方法及其比较研究[J].数学的实践与认识,2008,38(23):121~128.

[5]潘国荣,周莹,张德海.坐标转换模型在盾构姿态计算中的应用[J].大地测量与地球动力学,2006,8(3):0084 ~04.

[6]陈义,沈云中,刘大杰.适用于大旋转角的三维基准转换的一种简便模型[J].武汉大学学报(信息科学版),2004,29(12):1101 ~1105.

[7]王超,潘杨,张维维.Visual C#通用范例开发金典[M].北京:电子工业出版社,2008.

猜你喜欢
余弦直角坐标坐标系
从平面直角坐标系到解析几何
深入学习“平面直角坐标系”
深刻理解平面直角坐标系
认识“平面直角坐标系”
解密坐标系中的平移变换
坐标系背后的故事
基于重心坐标系的平面几何证明的探讨
两个含余弦函数的三角母不等式及其推论
实施正、余弦函数代换破解一类代数问题
分数阶余弦变换的卷积定理