【问题标题】:Radius of Centroid Centered Circle Encompassing X Percent of Polygon?包含多边形X百分比的质心圆的半径?
【发布时间】:2015-12-02 20:22:12
【问题描述】:
【问题讨论】:
标签:
polygon
computational-geometry
geometry-surface
centroid
【解决方案1】:
我目前的蛮力方法是:
1) 从半径 R 开始,半径为包含 100% 多边形所需的半径的一半
2) 用 16 边正十六边形近似圆(面积 = 具有相同半径的圆的 97%)
3) 使用其中一种裁剪方法(例如 Weiler-Atherton)找到两个多边形的交点
4) 计算相交多边形的面积
5) 迭代半径 R 的值,直到交点面积除以多边形面积在 (1.0262 * X%) 的 E% 范围内,其中 E% 是面积的可接受误差,1.0262 乘数占使用圆形和十六边形的区别。
【解决方案2】:
首先将多边形分解为一组三角形,其中一个顶点位于质心,另外两个形成边,具有正方向或负方向(取决于边方向)。三角形的代数面积之和等于多边形的面积。
然后考虑单个三角形与直径不断增大的圆的交点面积。这首先以等于中心角的系数二次增长,直到遇到第一个顶点。然后区域越来越慢,直到遇到第二个顶点,到达整个三角形区域。
通过为所有三角形添加这些函数,您将构建全局相交面积曲线,该曲线分段定义为顶点距离的函数。您将首先确定函数在哪些顶点之间达到总面积的 X%。然后,知道这条曲线的解析表达式,您将找到确切的半径值。这是否可以解析或数值完成取决于三角形区域尾部的表达式。