如果我有一组任意的点,然后将相同的点集旋转一定角度,是否有人知道任何算法来计算/估算旋转中心?或者有哪些领域需要这类算法?我在寻找相关信息时遇到了困难。谢谢。
您需要在数据集中找到一些签名,以便识别第一组(A)中的点与第二组(B)中的点。
一种简单的方法如下:
对于A中的每个元素E,找到两个最近的点(N1,N2),并计算N1、E、N2之间的角度,得出三个值:角度和E到N1和N2的距离(ang,d1,d2)。
在A中找到3个具有唯一元组(ang,d1,d2)的点。
对于B中的每个元素,也计算其到其两个最近邻居的距离和角度。找到与从A中选择的那些匹配的3个点。
计算旋转只是几何分析的问题。
更新:您需要3个点来确定3D空间中的旋转。在2D中,只需要两个点。
更新2:正如其他帖子上的评论所指出的那样,A中可能存在对称性,这将阻止您找到( ang,d1,d2)的3个唯一三元组。在这种情况下,对于A中选择的三个点中的每一个,您都必须在B中的所有元素中执行搜索,匹配它们的三元组,直到某个组合产生适用于A中所有元素的旋转。