如果我有一组任意点,然后同一组点旋转一定程度,有没有人知道任何算法来计算/估计旋转中心的位置?还是需要这些算法的研究领域? 我无法找到任何相关信息。
由于
答案 0 :(得分:9)
假设你有一个点(x,y),它移动到(x',y')。
然后旋转中心必须位于垂直于(x,y) - (x',y')的直线上,并且与中心(x,y) - (x',y')相交。
现在换另一个点,(x2,y2),移动到(x'2,y'2)。这也会产生一条旋转中心必须位于其上的线。
现在取这两行并计算交点。你有旋转中心。
更新:如果你没有找到哪一点的对应关系,那就不难理解了。这是我头脑中的一个建议:找到“之前”点的质量中心。根据距离此点的距离对点进行排序。现在对“后”点进行相同的操作。现在两组的顺序应该匹配。 (旋转前最接近质心的点应该是旋转后最接近质心的点。)
答案 1 :(得分:3)
对于这类问题,这将是一种疯狂的过度杀伤,但我认为generalized Hough transform对象检测的功能至少包含了你想要的功能,即使它并不是为了这个目的。
给定从一组点和另一组任意点创建的任意形状,它会尝试在点集中找到形状,即使它已被旋转,缩放和平移。您可以取出缩放和翻译并获得所需内容。
基本上它归结为粗暴强迫可能的旋转点,看哪一个最适合第二组点。
答案 2 :(得分:1)
非常有趣的问题。我对此的了解有点过时,但我记得,有一些关于使用子图分析的研究;也就是说,通过点之间的距离和其中的方差来表征点集的子部分,然后将前后轮换之间的子图分析相关联。
当然,这是假设一组非常复杂的点具有不均匀的分布。
答案 3 :(得分:0)
您需要在数据集上找到一些签名,以便识别第一组(A)中的点和第二组(B)上的点。
一种简单的方法如下:
对于A中的每个元素E,找到两个最近的点(N1,N2)并计算N1,E,N2之间的角度,得到三个值:角度和从E到N1和N2的距离( ang,d1,d2)。
使用唯一元组(ang,d1,d2)在A中找到3个点。
B中的每个元素也计算到两个最近邻居的距离和角度。找到与从A。
计算旋转只是几何分析的问题。
更新:您需要3个点来确定3D空间中的旋转。在2D中,有两个会这样做。
更新2 :正如其他人对其他帖子发表评论一样,A中可能存在对称性,这会阻止您找到(ang,d1,d2)的3个唯一三元组。在这种情况下,对于A中所选择的三个点中的每一个,您将必须搜索B中与其三元组匹配的所有元素,直到某些组合产生适用于A中所有元素的旋转。