假设我们有一条参数曲线,例如一个圆:
x = r * cos(t)
y = r * sin(t)
我们希望以如下方式在屏幕上绘制曲线:
- 每个像素只绘制一次(最佳部分)
- 曲线上的每个 (x, y) 都有一个绘制像素(连续部分)
如果我们只是为 [t1, t2] 中的每个 t 绘制 (x, y),这些条件将不会得到满足。
我正在寻找任何参数曲线的通用解决方案。
不存在 100% 满足您的标准的通用解决方案。
所以我们不得不妥协。
通常这是通过从步长(通常是您的例程的参数)开始来解决的,这个步长可以由启发式触发细分,例如:
当段所覆盖的距离大于给定距离(例如一个像素)时进行细分
曲线方向变化太大时细分
或这些的组合。
通常也会对细分进行一些限制,以避免永远占用。
许多提供参数绘图的系统从启发式参数和步长的一些可变默认设置开始。如果曲线不够“好”或者花费的时间太长,用户可以调整这些。
问题是总是有病态的曲线会破坏你的绘画方法,使其错过细节或花费太长时间。
查看Bézier 样条曲线。