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