Jzy3d 3D-интерполяция не рендеринг - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь построить трехмерный путь, заданный набором координат.Из демонстрационного приложения jzy3d я обнаружил, что это возможно через их BernsteinInterpolator и LineStripInterpolated классы.

С помощью их исходного кода я пытаюсь воспроизвести это следующим образом:

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

К сожалению, вышеизложенное отображает только пустое окно без ошибок и исключений.У кого-нибудь есть идеи, что пошло не так?Ваша помощь очень ценится!

1 Ответ

0 голосов
/ 25 апреля 2018

Итак, я углубился в исходный код и обнаружил, что существует способ обойти класс 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);
}

Надеюсь, это поможет кому-то еще с той же проблемой. Мне все еще интересно, почему мой предыдущий метод не сработал. (

...