您的当前位置:首页坐标转换

坐标转换

2022-09-05 来源:小侦探旅游网
平面坐标旋转公式推导 2010-04-28 17:34

3D坐标绕轴旋转公式推导

绕轴旋转实际上等价于平面点绕远点旋转,所以这里只用分析一下平面情况就可以。

问题转换为:平面上任意点(x,y)绕原点旋转R度后,新点坐标为多少? 一、

通常情况,我们容易想到一下的推导方式(我一开始想到的),请看下图:

绿色的点为原始点(x,y),转过r度后到蓝色的点的位置,我一开始想到的是先求出初始点(绿色的点)的初始角度a,然后计算出半径,根据三角关系可以得到

新点的坐标。 关系式:

a=arctan(y/x)

radio=sqrt(x*x+y*y)

新点:x’=radio*Cos(a+r); y’=radio*Sin(a+r)

看起来貌似可以,但是编程处理旋转问题时发现了严重的问题,在求a的时候用了x做分母,所以就限定了x不等于0,这就不好了。 二、直角坐标系求解

思考了一天,不知道如何解决分母的问题,突然回想起来以前学过坐标变换,恍然大悟,汗一个。

还是需要通过几何关系来进行求解,可以避免定义域不连续的问题,无图无真相!

注释:图中红色的点为初始点,粉色的为新点,黑色的线为初始坐标系,红色的线为假想坐标系,黄色的线都是垂线。

在坐标变换中,我们可以换一种思考方式,点的旋转实际上可以理解为坐标系旋转到新的位置,然后求到新点相对于老坐标系的坐标即可。

图中我们很容易得到标注的两个角度相等,新点的横坐标X’等于下面尺寸标注的X*Cos(φ)-两条黄色的垂线间的距离,而这段距离我们可以在红色的新坐标系中很容易求出distance=Y * Sin(φ),所以很容易就得到了新点的横坐标 X’=X*Cos(φ)-Y*Sin(φ) 式① 同理,得到

Y’=X*Sin(φ)+Y*Cos(φ) 式② 式①和式②就是平面任一点绕原点旋转的方程。 对于3D坐标中,这便是绕Z轴旋转的公式 X’=X*Cos(φ)-Y*Sin(φ) Y’=X*Sin(φ)+Y*Cos(φ) Z’=Z

对于绕其他轴旋转的公式都可以用此方法得到。 三、

采用三角函数展开将会得到更简单的求解方法, X'=Radio*Cos(r+a)

=Radio*(Cos( r)*Cos(a)-Sin( r)*Sin(a)) =Radio*Cos(a)*Cos( r)-Radio*Sin(a)*Sin( r) =X*Cos( r)-Y*Sin( r) 同理得到

Y’=Radio*Sin(r+a) =X*Sin( r)+Y*Cos( r) 看来真是要温故而知新!

因篇幅问题不能全部显示,请点此查看更多更全内容