我正在寻找能让我在给定折线的情况下变厚的算法 - 或者会创建第二条折线的算法,可以将其视为“粗线”的左/右边界。
输入是2D(折线)和宽度中的点序列。宽度是原始折线和创建的折线之间的距离(它可以在“转弯”,即顶点)本地变化。
条件 - 此算法不应在顶点上创建弧,也不应创建新顶点。它只能减少顶点的数量。
示例:
--
/ \
/ \
A B
考虑从A到B创建“外”折线,我们有3个顶点,我们将有3个顶点:
---
/ \
/ \
/ \
A B
但是当创建“内部”折线时,可能会发生减少顶点的数量:
/\
/ \
A B
当然你可以想到几个特殊条件(例如,原始折线是否交叉本身 - 在我的情况下不是)但是欢迎任何有用的方向,想法,提示,算法名称或整个算法,我我很感激。
答案 0 :(得分:3)
基本解决方案是在每个顶点(在单位法向量之和的方向上)构造bissectors,并在沿着它的所需位置定位点(到顶点的距离是所需的偏移量)半角的正弦曲线。)
您将获得与原始折线平行的折线。不幸的是,由于折线可以在急转弯内自行穿过,因此存在技术难题。这是一个全局问题(需要知道要解决的整个配置 - 在极端情况下,整个偏移折线可能处于自交叉配置,并且不可见),不太容易处理。
如果你只需要渲染粗线,快速&脏的方法是忽略自交,并使用支持“非零”绕组数规则的多边形填充算法。