【问题标题】:Rotating an object using two sets of coordinates使用两组坐标旋转对象
【发布时间】:2016-06-11 19:24:45
【问题描述】:

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

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

【问题讨论】:

  • 您要旋转它的哪一点?箭头的尖端,尾巴的末端,在中间的某个地方?您的代码中的箭头是如何表示的?
  • 箭头是一个图像,我想围绕它的中心旋转。我已更新问题以显示这一点。

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


【解决方案1】:

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

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

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

执行旋转所围绕的旋转轴可以任意定向,这是一个很大的好处。这在以后会派上用场。

如果您想查看其中的algorithmic example,建议您查看this 的帖子。对于math,维基百科可能会有所帮助。

【讨论】:

  • 我正在尝试在 2D 表面上旋转,所以我不确定这是否可行,我也完全不明白,请您解释一下。
  • 在不了解应用程序细节的情况下,它将适用于 平面 表面,而该表面又是 2D。您只需使用表面法线向量作为旋转轴的旋转轴。这只是假设您使用四元数方法。
猜你喜欢
  • 1970-01-01
  • 2019-05-08
  • 2019-03-21
  • 2021-09-15
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多