Geometry 如何优化绘制参数化连续曲线?

Geometry 如何优化绘制参数化连续曲线?,geometry,plot,curve,Geometry,Plot,Curve,假设我们有一条参数曲线,例如一个圆: x = r * cos(t) y = r * sin(t) 我们希望以以下方式在屏幕上绘制曲线: 每个像素只绘制一次(最佳部分) 位于曲线(连续部分)上的每个(x,y)都有一个绘制的像素 如果我们只为[t1,t2]中的每个t绘制(x,y),这些条件将不满足 我正在搜索任何参数曲线的通解。不存在100%满足您标准的通解 因此,我们必须进行压缩 通常,这是通过从步长开始解决的(通常是例程的一个参数),该步长可以由启发式触发,例如: 当线段所覆盖的

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

  x = r * cos(t)
  y = r * sin(t)
我们希望以以下方式在屏幕上绘制曲线:

  • 每个像素只绘制一次(最佳部分)
  • 位于曲线(连续部分)上的每个(x,y)都有一个绘制的像素
如果我们只为[t1,t2]中的每个t绘制(x,y),这些条件将不满足


我正在搜索任何参数曲线的通解。

不存在100%满足您标准的通解

因此,我们必须进行压缩

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

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

  • 曲线方向变化过大时进行细分

或者这些的组合

通常也会对细分进行一些限制,以避免花费很长时间

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

问题是,总是有病理曲线会破坏你的绘制方法,使其错过细节或耗时过长。

请查看


如何绘制(x,y)=(1.5,1.5)?是否绘制像素(1,1)、(1,2)、(2,1)、(2,2)?四舍五入到最接近的整数,这样就可以使用(2,2)贝塞尔样条曲线来绘制点集,但如果您有一个参数化函数,则添加更多的步长几乎比平滑间隙要好。