Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 三次bezier曲线笔划轮廓_Math_Bezier - Fatal编程技术网

Math 三次bezier曲线笔划轮廓

Math 三次bezier曲线笔划轮廓,math,bezier,Math,Bezier,对于三次贝塞尔曲线的笔划,我的意思是渲染一条具有特定线宽“w”的曲线“a” 如何推导出描述贝塞尔“A”笔划轮廓的其他三次贝塞尔曲线?Ohhh。要获取贝塞尔曲线的偏移曲线 坏消息。这很难,因为这些曲线不能简单地用数值推导出来。它们包含各种交叉点、环路和其他讨厌的东西 不过也有一些近似值。到目前为止,我读到的最好的方法是托马斯·海恩(Thomas F.Hain)的一篇论文() 他进行展平,所以他的论文主要是关于将偏移曲线分解为直线段和圆弧段,但您可以稍后将它们合并回beziers 为了更好地理解,您

对于三次贝塞尔曲线的笔划,我的意思是渲染一条具有特定线宽“w”的曲线“a”


如何推导出描述贝塞尔“A”笔划轮廓的其他三次贝塞尔曲线?

Ohhh。要获取贝塞尔曲线的偏移曲线

坏消息。这很难,因为这些曲线不能简单地用数值推导出来。它们包含各种交叉点、环路和其他讨厌的东西

不过也有一些近似值。到目前为止,我读到的最好的方法是托马斯·海恩(Thomas F.Hain)的一篇论文()

他进行展平,所以他的论文主要是关于将偏移曲线分解为直线段和圆弧段,但您可以稍后将它们合并回beziers


为了更好地理解,您可能还需要阅读他其他与贝塞尔相关的论文。

Qt的QPainterPathStroker(它是开源的,可读性很强的代码)使用上述论文中描述的算法来做您想做的事情。

要做到准确,正如其他人所解释的那样非常困难。偏移曲线不是三次贝塞尔曲线,非常棘手。然后,比偏移深的凹度会导致相交问题

好消息是,通常需要计算笔划偏移以进行渲染,因此只需要像素精度。此外,如果遵守多边形填充的缠绕规则,则各种交点仍会创建填充多边形。因此,首先展平曲线,然后以线性方式偏移,这将成为一个直线多边形问题

这里的一些代码可以用作参考实现:

该论文也在citeseerx上:如果有人在寻找,目前链接到Hain论文的链接是: