【问题标题】:How to optimally plot parametric continuous curve?如何优化绘制参数连续曲线?
【发布时间】:2010-11-16 13:43:53
【问题描述】:

假设我们有一条参数曲线,例如一个圆:

  x = r * cos(t)
  y = r * sin(t)

我们希望在屏幕上以如下方式绘制曲线:

  • 每个像素只绘制一次(最佳部分)
  • 曲线(连续部分)上的每个 (x, y) 都有一个绘制像素

如果我们只是为 [t1, t2] 中的每个 t 绘制 (x, y),这些条件将不会满足。

我正在寻找任何参数曲线的通用解决方案。

【问题讨论】:

  • 如何绘制 (x, y) = (1.5, 1.5)?你画像素 (1, 1), (1, 2), (2, 1), (2, 2) 吗?
  • 四舍五入到最接近的整数,所以只是 (2, 2)

标签: geometry plot curve


【解决方案1】:

不存在 100% 满足您的标准的通用解决方案。

所以我们必须妥协。

通常这是通过从步长(通常是您的例程的参数)开始来解决的,这个步长可以由启发式触发细分,例如:

  • 当段所覆盖的距离大于给定距离(例如一个像素)时进行细分

  • 曲线方向变化太大时细分

或这些的组合。

通常也会对细分进行一些限制以避免永远占用。

许多提供参数绘图的系统从启发式参数和步长的一些可变默认设置开始。如果曲线不够“好”或花费的时间太长,用户可以调整这些。

问题在于,总是有病态曲线会破坏您的绘图方法,使其遗漏细节或花费过长。

【讨论】:

    【解决方案2】:

    查看Bézier splines

    【讨论】:

    • 贝塞尔样条曲线可用于绘制点集,但如果您有参数函数,添加更多步骤几乎总是比平滑间隙更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多