从多个点绘制曲线

| 我想知道如何将点连接在一起以形成曲线。我在图中有20个点,想知道如何加入它们。我尝试了GeneralPath对象,但想知道是否有更好的方法?     
已邀请:
        要建立曲线,而不仅仅是直线,可以使用use0ѭ的方法
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
这将创建贝塞尔曲线。但是要计算控制点
x1, y1, x2, y2
,您需要进行一些数学运算或下载一些插值库。 您也可以检查该问题,它有指向实现某些插值算法的源代码的链接。     
        GeneralPath当然是最直接的。创建路径,为第一个点调用moveTo,然后为每个后续点调用lineTo。然后将其绘制到Graphics2D对象。     
        听起来您需要一条Catmull-Rom曲线。有关详细信息,请参见http://www.mvps.org/directx/articles/catmull/;有关实现,请参见http://johnsogg.blogspot.com/2010/01/cardinal-splines-and-catmull-rom.html。 。     
        
GeneralPath
是一个很好的方法,除非您没有其他说明,否则应该可以很好地满足您的要求。
Path2D
是一个可以更精确的新类,但是如果您不需要该精度,则over4ѭ不会带来任何好处。     
        贝塞尔(Bézier)想象了一个基于多项式元素的曲线:
(a + b)^3 = a^3 + 3a^2*b + 3a*b^2 + b^3
^
是\“到电源\”,而不是\“ XOR \”)。他实际上将
a
替换为
t
,并将
b
替换为
1-t
。这样公式将是
(t + (1 - t))^3
(是,等于1)。 至此,我们有了公式
t^3 + 3*t^2*(1-t) + 3*t*(1-t)^2 + (1-t)^3
共有4个部分。选择4点。
(x1,y1), (x2,y2), (x3,y3), (x4,y4)
现在,创建参数方程式,将公式的每个部分乘以一个坐标,如下所示:
x(t) = t^3*x1 + 3*t^2*(1-t)*x2 + 3*t*(1-t)^2*x3 + (1-t)^3*x4
y(t) = t^3*y1 + 3*t^2*(1-t)*y2 + 3*t*(1-t)^2*y3 + (1-t)^3*y4
这是三次贝塞尔曲线的参数方程。 您想要第20位Bézier电源吗? “简单地”发展出ѭ16。 Pascal Triangle应该可以为您提供帮助。     

要回复问题请先登录注册