两个三角形之间的相似变换

时间:2012-06-01 14:23:22

标签: math geometry transformation affinetransform

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

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

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

知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

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

  • 比例:按区域(B)/区域(A)缩放三角形A
  • 转换:通过这样的矢量转换三角形A,使三角形centroids匹配。
  • 轮播:使用优化方法为范围[0, 360)选择符合您个人相似性标准的轮值。

旋转部分可能是最困难的部分。一个简单而有效的想法是从三点开始应用hill climbing并采取最佳措施。这三个点是将A的一个点放在B的每个点上所需的旋转量。

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