使用两组坐标旋转对象

时间:2016-02-28 20:40:13

标签: python python-3.x rotation pygame transformation

我正在尝试创建一个简单的游戏,我有一个想要指向鼠标的图像(像这样的箭头:--->)。如果我知道鼠标位置和图像的位置,我肯定可以做一些数学运算来旋转图像,使其指向鼠标指针。那么我需要做什么才能以这种方式旋转对象(围绕中心)?

如果我想将对象指向另一组坐标,我是否也可以这样做?

1 个答案:

答案 0 :(得分:1)

对于旋转,您可以使用旋转矩阵,欧拉角或四元数。我会使用后者,因为他们没有万向节锁的问题。所有这些都是可以互换的,但是有很多惯例,请注意这一点!

具有欧拉角的问题是,它们中有很多。我知道这听起来有点奇怪。我的意思是有各种约定,你必须知道你正在使用哪一个,否则你会引入错误。下图围绕z(D)轴旋转,然后围绕新x'(C)轴旋转,然后围绕z'(B)轴旋转。

Euler Angles from Wolfram Mathworld

使用quaternions,可以完全避免这个问题。虽然它引入了一些新的,例如更复杂的数学,但这在下面的链接中得到了很好的解释,并且也在various libraries in python中实现。

进行旋转的旋转轴可以任意取向,这是一个很大的好处。这在以后非常方便。

如果您希望看到algorithmic example,我建议您查看this帖子。对于math,维基百科可能有帮助。