有以下计划的任务:有一定数量的点形成类似矩形的东西。但是,它不沿轴定向(不是 AABB)。任务是找到一个向量,该向量将以与条件矩形的大高度相同的方式定向。
想到的唯一解决方案是通过矩形的条件中心绘制一条直线,然后对于一侧的点,我们执行以下操作:找到与中心的距离,将其平方。对这些值求和。我们在直线的另一边做同样的事情。然后我们画另一条线,已经在不同的角度。
我们执行第 N 次操作,直到找到一条直线,这条直线两侧的点的权重之和最大。
为什么我不喜欢这种方法?事实并非如此,它会正常工作,而且我也被迫执行这些操作 N 次,而且越多 - 越准确,因此它太昂贵了。可以做些什么来以更少的努力找到向量?
主轴和主要转动惯量。
找到点集的质心。然后 - 关于平行于坐标轴并通过重心的轴的惯性矩,以及关于重心的中心惯性矩。主轴方向:
http://www.soprotmat.ru/geom2.htm
http://mysopromat.ru/uchebnye_kursy/sopromat/geometricheskie_harakteristiki/glavnye_osi_glavnye_momenty_inertsii/
更新
如果“倾斜矩形”内部的点分布不均匀,要找到重心和转动惯量,需要使用的不是一组点,而是一个包络凸多边形——凸包(https://en .wikipedia.org/wiki/Convex_hull)。
关于你的算法。它可以沿更大或更小的高度返回一个向量。此外,直线两侧的点数可能不同,这会导致相当大的误差。
我会做类似以下的事情。我将不使用公式进行描述,自己选择它们以达到结果。
威胁如果太难,我会画画,但我真的不想。读算法自己画图,纸上会更清晰。
ZYY图片添加。如您所见,生成的矩形并不完全位于您要绘制它的位置,并且大小可能不同,但这对您来说并不重要。最主要的是保留了方向和比例,这足以获得所需的结果。
但是,如果您不仅需要矢量的方向,还需要它的大小,则可以从最终的矩形制作内接和外接矩形(无需旋转最后一个,只需更改大小和位置)。接下来,将它们彼此最近的顶点与线段连接起来,并通过这些线段的中心构建一个矩形。但据我了解,这不是必需的。
ZYYY在最初的几何课程中,您需要的公式非常简单。
ZYYYY这个决定是基于直觉的,我现在不想证明它的真实性。