Python 中基于三角形的 3D 点的旋转和平移

Rotation and translation of 3D points based on a triangle in Python

我确定这已经是答案,但我仍然对我在 Whosebug 上找到的 post 感到困惑,这就是为什么我决定 post 我的问题。

我不是很熟悉几何变换(除了平移,但这个很简单),我需要根据图片中描述的选择 3 个点来变换一组 3D 点

这是我目前的计划:

  1. 根据 3 个点创建一个三角形(我们称之为 tri)-> 可以
  2. 计算我的3个点组成的三角形的质心->这个就可以了
  3. 将所有点平移到原点 (0,0,0) -> 这也可以
  4. 旋转每个点,使 tri 的点 Z 坐标等于 0 -> 这是我迷路了,不确定如何处理(没有任何错误...)

我知道这不是一个难题,但是如果有人知道如何使用 numpy 进行处理,我愿意:-)

感谢您的帮助:-)

在第 4 步中,您需要旋转三角形,使其法线垂直。

你需要先计算三角形的法线。您可以通过使用三角形两侧的两个向量(a 和 b)之间的叉积来实现:N = a x b.

然后您可以使用三角形法线与 Z 轴之间的叉积计算旋转轴 A:A = N x Z。

然后您可以使用轴 A 旋转这些点。

如别处所指出的,解不是唯一的。