我有两个 2D 三角形(即它们都位于平面内),并且想找到将其中一个最接近地映射到另一个上的相似变换(旋转 + 缩放 + 平移)。
这两个三角形实际上并不相似,所以我只想让变换尽可能地对齐它们。
我知道我可以在两个三角形之间创建一个仿射变换,它将一个精确地映射到另一个,但我不想要仿射变换中存在的剪切效应。我希望我的变换仅由平移、旋转和缩放组成。
知道怎么做吗?
我有两个 2D 三角形(即它们都位于平面内),并且想找到将其中一个最接近地映射到另一个上的相似变换(旋转 + 缩放 + 平移)。
这两个三角形实际上并不相似,所以我只想让变换尽可能地对齐它们。
我知道我可以在两个三角形之间创建一个仿射变换,它将一个精确地映射到另一个,但我不想要仿射变换中存在的剪切效应。我希望我的变换仅由平移、旋转和缩放组成。
知道怎么做吗?
定义相似性不是一件容易的事,但这里有一些你可以尝试的想法。假设您想将三角形 A(几乎)转换为三角形 B
[0, 360)
旋转范围内选择一个符合您个人相似性标准的值。旋转部分可能是最困难的。一个简单而有效的想法是从三点开始进行爬山并取得最佳成绩。这三个点是将 A 的一个点放在 B 的每个点上所需的旋转量。
相似性标准本身也并不容易。想到的一件事是转换后重叠表面的数量。计算这并不容易,或者至少很麻烦。