我不确定您对数学的掌握程度,如果这超出了您的理解范围,或者解释过于简单,请接受我的道歉。但是,我立即想到的解决方案是,在固定角度下对多边形宽度的离散采样使用傅里叶分析。
您的方法是通过旋转一小部分并进行测试来考虑连续函数的离散采样。
我们知道,对于每个可能的旋转,都存在一个定义所需测量的连续函数,您只是在设置点上评估它。也就是说,已知角度到多边形宽度函数存在,并且我们可以在足够的时间内评估有限数量的角度的多边形宽度。
因此,假设我们能够找到一个用基本函数表示这个角度到宽度函数的表达式,我们就可以通过解方程来确定所有可能产生最小宽度的角度。
我们知道,因为您旋转了2PI弧度,所以宽度函数将是2PI周期性的,因此,通过应用傅里叶分析,您可以完美地重构函数,只要采样足够的角度。
问题是,需要多少样本才能产生函数的完美重构?
我认为这取决于边界点之间的最小距离。
ceil(perimiterLength/smallestDistanceBetweenPoints)
简而言之,我正在通过沿着边界放置均匀间隔的样本来重新采样边界的周长,使用的间距等于或小于最小距离。让我们称这个数字为n。(老实说,我不太确定这是否正确)
在2PI弧度中通过n个均匀间隔的角度对东西方向的点进行采样,并将它们的差作为n点角度到宽度函数进行绘制。
对此图形进行傅里叶变换,以给出定义距离函数所需的一组实傅里叶级数系数集合。
使用您喜欢的任何方法来识别函数的最小值。
因此,我想对于您的三角形示例,您需要确定您需要ceil(3 + root(3))= 5个样本。在0 2pi / 5 4pi / 5 6pi / 6和8pi / 5处计算距离,对此结果进行傅里叶变换并重构信号,创建类似的公式。
a0 + a1 sin (t) + a2 sin (2t)
然后你必须确定这个函数的最小值(有很多选项可供选择)
O(m log m)
内找到。 - BlueRaja - Danny Pflughoeft