【问题标题】:Jzy3d 3d interpolation plots not renderingJzy3d 3d插值图不渲染
【发布时间】:2018-10-05 03:14:27
【问题描述】:

我正在尝试在给定一组坐标的情况下绘制 3d 路径。从 jzy3d 的演示应用程序中,我发现这可以通过他们的 BernsteinInterpolatorLineStripInterpolated 类实现。

在他们的源代码的帮助下,我尝试重现如下:

public static void main(String[] args) {

    BernsteinInterpolator interp = new BernsteinInterpolator();

    List<Coord3d> controlCoords = new ArrayList<>();
    controlCoords.add(new Coord3d(0.0, 0.0, 0.0));        
    controlCoords.add(new Coord3d(1.0, 0.0, 1.0));
    controlCoords.add(new Coord3d(1.0, 0.0, 2.0));
    controlCoords.add(new Coord3d(1.0, 1.0, 2.0));
    controlCoords.add(new Coord3d(0.0, 1.0, 2.0));
    controlCoords.add(new Coord3d(3.0, 2.0, -1.0));

    LineStripInterpolated line = new LineStripInterpolated(interp, controlCoords, 30);

    Chart chart = new AWTChart(Quality.Intermediate);
    chart.add(line);
    chart.open("chart test", 600, 600);
}

根据演示应用程序,这是我期望得到的 -> DemoPlot

不幸的是,上面只渲染了一个没有错误或异常的空白窗口。有谁知道出了什么问题?非常感谢您的帮助!

【问题讨论】:

    标签: plot graph interpolation jzy3d


    【解决方案1】:

    于是我稍微深入挖掘了一下源码,发现有一种绕过LineStripInterpolated类的方法如下:

    public static void main(String[] args) {
    
        List<Coord3d> controlCoords = new ArrayList<>();
        controlCoords.add(new Coord3d(0.0F, 0.0F, 0.0F));
        controlCoords.add(new Coord3d(1.0F, 0.0F, 1.0F));
        controlCoords.add(new Coord3d(1.0F, 0.0F, 2.0F));
        controlCoords.add(new Coord3d(1.0F, 1.0F, 2.0F));
        controlCoords.add(new Coord3d(0.0F, 1.0F, 2.0F));
        controlCoords.add(new Coord3d(3.0F, 2.0F, -1.0F));
    
        BernsteinInterpolator interp = new BernsteinInterpolator();
        List<Coord3d> interpolatedCoords = interp.interpolate(controlCoords, 30);
    
        List<Point> controlPoints = new ArrayList<>();
        for (Coord3d coord : controlCoords) {
            controlPoints.add(new Point(coord, Color.RED, 5.0));
        }
    
        List<Point> interpPoints = new ArrayList<>();
        for (Coord3d coord : interpolatedCoords) {
            interpPoints.add(new Point(coord, Color.BLUE, 3.0));
        }
    
        LineStrip line = new LineStrip(interpolatedCoords);
        line.setWireframeColor(Color.BLACK);
    
        Chart chart = new AWTChart(Quality.Intermediate);
        chart.add(line);
        chart.add(controlPoints);
        chart.add(interpPoints);
        chart.open("chart test", 600, 600);
    }
    

    希望这可以帮助遇到同样问题的其他人。我仍然很好奇为什么我以前的方法不起作用。 :(

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 2017-10-26
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      相关资源
      最近更新 更多