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

2024-04-24 11:46:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我确信这已经是答案了,但我仍然对我在stackoverflow上找到的帖子感到困惑,这就是我决定发布我的问题的原因

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

enter image description here

以下是我目前的计划:

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

我知道这不是一个困难的问题,但如果有人知道如何处理numpy,例如,我是开放的:-)

谢谢您的帮助:-)


Tags: 答案gtnumpy错误图片原因stackoverflowtri
1条回答
网友
1楼 · 发布于 2024-04-24 11:46:39

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

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

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

然后可以使用轴A旋转点

正如其他地方指出的那样,解决方案并非独一无二

相关问题 更多 >