我有一系列鼠标点,笔触宽度和柔软度。我可以画出柔和的圆圈和柔和的线条。我应该使用哪种算法来绘制点数组?我希望交叉线条看起来不错,也可以看到终点。
答案 0 :(得分:3)
我肯定会选择Bezier用于此目的,特别是我将实现分段立方Bezier - 它非常容易实现和掌握,并且它被3D Studio max和Photoshop广泛使用。
这是一个很好的来源: http://local.wasp.uwa.edu.au/~pbourke/surfaces_curves/bezier/cubicbezier.html
假设您在点之间有订单,为了设置四个控制点,您应该按如下方式进行:
我定义了点P [i]和点P [i + 1]
之间的切线要在两点之间创建分段,我会执行以下操作:
我选择0.3T的原因是任意的,为了给它足够的“力量”而不是太多,你可以使用更精细的方法来处理加速(C2连续性)。
享受
答案 1 :(得分:2)
从Gooch& Gooch的Non-Photorealistic Rendering,您可能会发现Pham的工作很有用 - 请参阅PDF解释算法。
Tateosian有一个很好的overview article,它用漂亮的图片解释了更多细节的附加技术。单独的贝塞尔曲线绘制不会产生你想要的效果(取决于你想要的花哨程度)。但是,我肯定从保罗的工作开始,看看用你的软刷画它是否足够好。
警告这个空间里有很多patents,叹息。
答案 2 :(得分:1)
我想也许你正在寻找样条算法。
这是一个样条教程,您可能会发现它有用:
[http://www.doc.ic.ac.uk/~dfg/AndysSplineTutorial/index.html]
大多数有关图形编程的书籍都涵盖了这个主题。
干杯。
答案 3 :(得分:1)
我想通了 - 使用一个非常柔和的渐变圆,重复绘制以进行笔触,使用乘法混合。