我知道如何计算多边形的质心及其面积,由此可以计算出以质心为中心的圆的半径,该质心包含100%的多边形:它是从质心到最远点的距离。
我的问题是:你怎么找到一个圆的半径R,它包含圆的X%(其中X%<100%)?
以下是一些我认为很好的测试示例几何: L, Square, U and Star Test Geometries
答案 0 :(得分:0)
我目前的蛮力方法是:
1)从半径R开始,该半径是包含100%多边形
所需尺寸的一半2)使用16边正六边形(面积=半径相同的圆的97%)近似圆
3)使用其中一种裁剪方法(例如Weiler-Atherton)找到两个多边形的交点
4)计算交点多边形的面积
5)迭代半径R的值,直到交点的面积除以多边形的面积在(%1.0262 * X%)的E%之内,其中E%是区域中可接受的误差,1.0262乘数占使用圆和十六边形之间的区别。
答案 1 :(得分:0)
首先将多边形分解为一组三角形,其中一个顶点位于质心,另外两个形成边缘,具有正或负方向(取决于边缘方向)。三角形的代数区域的总和将等于多边形的面积。
然后考虑单个三角形与生长直径圆的交点区域。这首先以二次方式增长,系数等于中心角,直到满足第一个顶点。然后该区域变得越来越慢,直到满足第二个顶点,并到达整个三角形区域。
通过为所有三角形添加这些函数,您将构建全局交叉区域曲线,该曲线作为顶点距离的函数被分段定义。您将首先确定函数在哪个顶点之间达到总面积的X%。然后,知道曲线的解析表达式,您将找到精确的半径值。这是否可以通过分析或数字来完成取决于三角形区域尾部的表达式。