用大角替换多边形中的小角

Replacing Small Angles in a Polygon with Bigger Ones

我有一个二维多边形区域的顶点数据,其中包含每个顶点的位置。我的任务是计算整个多边形的角度,并将小角度(比方说小于 120 度)的顶点替换为大角度的顶点。例如,如果三个点 (ABC) 成 90 度角,我想用另一个与其他两点成 120 度的点替换中间点 (B)。

我想知道是否可以编写一个算法来找到顶点 B 的新位置,给定 A 和 C 的 x-y 坐标以及 ABC 之间的 120 度角 (我计算了当前的角度,所以你不需要写如何去做)。请注意,我不是在寻找一个独特的点(没有独特的点),只是在寻找一个角度计算来代替这个点。如果你知道其他方法来做这种替换,也欢迎他们。

您有一个三角形 ABC,其中 B 的 "small" 角要用更大的角替换。将新位置称为 B'。这是施工。令 D 为 AC 的中点,即 D = (A+B)/2。您想将 B' 放在段 BD 上。 沿 BD 的任何位置都会导致 B' 处的角度更大,当 B'=D 时角度为 180。

在[0,1]中选择一个参数t。然后放置 B' = (1-t) B + t D。



现在,这里有一个缺陷(除了 spug 指出的)。可能是将 B 移动到 B' 导致 AB'C 击中其他 多边形的部分,所以它不再简单。您必须决定是否要计算保证不会导致自交的 t。