Java 如何获取曲线(形状)的点
我有一个Java的CubicCurve,它由4个控制点定义。我可以画出最终的形状,但如何在给定的分辨率下有效地接收该形状的每个点?Java 如何获取曲线(形状)的点,java,graphics,2d,curve,cubic,Java,Graphics,2d,Curve,Cubic,我有一个Java的CubicCurve,它由4个控制点定义。我可以画出最终的形状,但如何在给定的分辨率下有效地接收该形状的每个点? 顺便说一下,PathIterator“only”返回控制点,但不返回曲线本身的点。2D参数化三次曲线只是两个多项式 x(t)=ax0+ax1*t+ax2*t*t+ax3*t*t*t y(t)=ay0+ay1*t+ay2*t*t+ay3*t*t*t 其中t=因此,您可以从控制点计算a?0…a?3系数,然后以所需的小步循环t,以获得所需的所有点,例如dt=1.0/
顺便说一下,PathIterator“only”返回控制点,但不返回曲线本身的点。2D参数化三次曲线只是两个多项式
x(t)=ax0+ax1*t+ax2*t*t+ax3*t*t*t
y(t)=ay0+ay1*t+ay2*t*t+ay3*t*t*t
其中t=
因此,您可以从控制点计算a?0…a?3
系数,然后以所需的小步循环t
,以获得所需的所有点,例如dt=1.0/(n-1)
其中n
是点数
系数取决于用于贝塞尔/样条曲线或插值的曲线参见:
newBrightness=f(oldBrightness)
。显示你试图获取PathIterator最终PathIterator迭代器=曲线的代码。getPathIterator(null);while(!iterator.isDone()){final double[]coords=new double[6];iterator.currentSegment(coords);logger.info(coords[0]+“x”+coords[1]+“”+coords[2]+“x”+coords[3]+“”+coords[4]+“x”+coords[5]);iterator.next();}恐怕您在公式中使用的系数与Java中用于CubicCurve的系数不同:@Thomas,那么使用您所拥有的。。。如果可以从形状中提取系数,则无需计算它们。多项式方程x(t),y(t)
将是相同的。唯一可以改变的是t