将立方曲线转换为点

时间:2018-02-24 18:05:36

标签: java algorithm javafx geometry javafx-8

我有多个立方体曲线形成形状我想将这个形状转换为多边形而不会失去它们的曲线曲率。我有一个起点,终点和每条曲线的两个控件。是否有任何算法或方法将这组曲线转换为多个点的多边形? 提前致谢

private List<CubicCurve> curves = new ArrayList<>();

每个红点代表一条曲线的结束和下一条曲线的开始 两个红点之间的两个绿点代表曲线的控制点

enter image description here

2 个答案:

答案 0 :(得分:2)

对于找到Shape轮廓的中间点的上述问题,我有一个更简单,也可能更有效的解决方案。它还使用PathTransition,但更直接。我只用圆圈测试过它,但我认为这适用于任何形状。

public static void main(String[] args) {
    Shape shape = new Circle(100);
    PathTransition pt = new PathTransition(Duration.ONE, shape, new Circle());
    long t0 = System.currentTimeMillis();
    pt.playFromStart(); // force initialization
    pt.stop();
    for (double frac = 0.0; frac <= 1.0; frac += 0.05) {
        pt.interpolate(frac);
        System.out.println(pt.getNode().getTranslateX() + " " + pt.getNode().getTranslateY());
    }
    long t1 = System.currentTimeMillis();
    System.out.println("Evaluation took: " + (t1 - t0) + "ms");
}

答案 1 :(得分:1)

此过程称为“曲线展平”。

使用参数方程计算曲线上的中间点就足够了,并递归细分直到它们形成的三角形的高度变得可以忽略不计。

enter image description here