我正在为一个Path drawing algorythm进行重写。 我正在使用apache-commons-math的Spline Interpolator来获得2D空间中所有给定点的平滑路径......
目前我有:
@font-face
这背后的想法是,由于SplineInterpolator只接受函数(例如f(x)= y)并且x必须增加,我们将点数组分成2个双数组并插入2次...... <登记/>
首先是X值,然后是Y值...
作为X值,称为“索引”的“虚拟数组”的第一个值为0,第二个值为1,第三个值为2,依此类推...
为了绘制这条路径,我正在绘制一条从0点到1点的线,1到2点,2点到3点,依此类推......
有两件事要考虑......
答案 0 :(得分:1)
选择1作为'index'数组的步长是所谓的均匀参数化,除非您的数据点也相对均匀地分布,否则通常不会产生良好的结果。我建议使用弦长参数化或向心参数化,如下所示:
t0 = 0.0
t1 = d1/L
t2 = t1 + d2/L
t3 = t2 + d3/L
............
t(n-1)= 1.0.
其中
d1=|P1-P0|^e, d2=|P2-P1|^e, d3=|P3-P2|^e and L = d1+d2+d3+.....d(n-1).
对于弦长参数化,在上面的公式中使用e = 1.0。对于向心参数化,使用e = 0.5。请注意,使用e = 0.0只会导致均匀参数化。如果您的数据点具有非常不均匀的分布(即,点之间的一些距离很大而一些很小),向心参数化通常会导致比弦长参数化更好的结果。