5

我有两个 2D 三角形(即它们都位于平面内),并且想找到将其中一个最接近地映射到另一个上的相似变换(旋转 + 缩放 + 平移)。

这两个三角形实际上并不相似,所以我只想让变换尽可能地对齐它们。

我知道我可以在两个三角形之间创建一个仿射变换,它将一个精确地映射到另一个,但我不想要仿射变换中存在的剪切效应。我希望我的变换仅由平移、旋转和缩放组成。

知道怎么做吗?

4

1 回答 1

2

定义相似性不是一件容易的事,但这里有一些你可以尝试的想法。假设您想将三角形​​ A(几乎)转换为三角形 B

  • 比例:按面积(B)/面积(A)缩放三角形 A
  • 变换:通过使两个三角形质心匹配的向量变换三角形A。
  • 旋转:使用优化方法在[0, 360)旋转范围内选择一个符合您个人相似性标准的值。

旋转部分可能是最困难的。一个简单而有效的想法是从三点开始进行爬山并取得最佳成绩。这三个点是将 A 的一个点放在 B 的每个点上所需的旋转量。

相似性标准本身也并不容易。想到的一件事是转换后重叠表面的数量。计算这并不容易,或者至少很麻烦。

于 2012-06-01T14:45:21.873 回答