求一算法的实现,在二维平面上点一系列离散点,例如起始点是(x1,y1)当我点第二个点(x2,y2)的时候,我需要用三次Bezier曲线的样条插值算法,在他们之间获取他们之间连接点的坐标集合,然后我会将这些点绘制在图上把两点圆滑的连接起来,然后再点第三个点,这时是以第二个点为起点,以此类推,现在求取得这些插值点集合的高效算法实现。

解决方案 »

  1.   

    Bezier曲线 的算法没有接触过,Graphics2D 的设计不是“点阵”而是“矢量”的(虽然最后具体到屏幕上还是点阵),这一点从Shape接口的方法设计上就可以看出来,——应该可以直接把算法/公式写进 Shape 接口的实现类的方法里,比如这个方法:
    boolean contains(double x, double y) {  // 这里只要验证 x,y 是不是在你的公式的解集内(是不是在点1和点2的解集内/点2和点3的解集内... ...),代入验证就行了
    }
    “在二维平面上点一系列离散点” 可以作为一个 List<Point>,用来建立你的 Shape 子类型的实例。任何实现了 Shape 接口的类型都可以直接传入 Graphics2D 的 draw() 方法内。因为对你说的算法没接触过,说的不对勿怪。
      

  2.   

    干嘛把全部点算出?算出关键的几个点 然后用path路径画法去画不行么?
      

  3.   

    不能用PATH,要自己画,不然不会问了