【发布时间】:2010-11-21 13:42:36
【问题描述】:
我正在尝试编写一种算法,该算法在 2D 中围绕其中心旋转一个正方形,直到它与从相同位置开始、大小相同且中心相同的旋转正方形匹配或“足够接近”。这相当容易。
但是正方形的角需要匹配,因此要获得匹配,要旋转的正方形的右上角必须足够接近旋转正方形的原始右上角。
我正在努力使其尽可能高效,因此如果基于上述标准的两个正方形的接近度变得更差,我知道我需要尝试向相反方向旋转。
我已经编写了旋转正方形的方法,并测试它们彼此之间的接近程度
我的主要问题是我应该如何根据我的接近程度来更改每次迭代的旋转量
例如如果当前测量值比前一个更近,则将角度减半并沿相同方向移动,否则将角度加倍并沿相反方向旋转?
但是我不认为这在效率方面是一个很差的解决方案。
任何想法都将不胜感激。
【问题讨论】:
-
你的数据是什么?它是如何存储/表示的?
-
你为什么不计算旋转正方形的边角?这是 O(1) 中的微不足道的三角函数。
-
它只是存储为四个坐标,我没有计算角度,因为它比所描述的近似是最好的方法要大得多。
-
所以近似它,但你知道你想要最终的角度,所以只需通过任何你喜欢的方法将角度差运行到零 - 线性、二阶、指数衰减等等。
标签: algorithm performance approximation