@Vindwo

[upd] Как задать размах осей графика поверхности построенной из полигонов при использовании библиотеки Jzy3d?

Старая проблема решена:
Подскажите пожалуйста, как в Java можно построить 3D-поверхность по набору координат [X,Y,Z] (желательно с примерами)?
Попытался с помощью библиотеки Jzy3D, но недостаток документации, работающих [у меня] примеров и знаний поставил на этих попытках крест.

UPD: Новая проблема:
Как сделать размах осей графика от 0.0 до 1.0 по оси Z (см изображение)
public class 3dSurface {

    public static void main(String[] args) {
        double[] xzCoord = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
        double[] yzCoord = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};

        double[][] xyCoord = {
                {0, 0.669999, 0.669999, 0.67, 0.669999, 0.669999, 0.669999, 0.67, 0.669999, 0.67, 0.444456},
                {0.33, 0.423135, 0.514753, 0.567927, 0.598819, 0.609384, 0.598819, 0.588316, 0.588316, 0.588316, 0.444456 },
                {0.33, 0.372351, 0.436996, 0.490949, 0.539678, 0.563004, 0.588315, 0.588316, 0.588316, 0.588316, 0.444456},
                {0.330001, 0.357742, 0.411684, 0.478472, 0.521527, 0.546111, 0.573646, 0.588316, 0.588316, 0.588316, 0.444456},
                {0.33, 0.35482, 0.411684, 0.478472, 0.5, 0.525409, 0.554987, 0.588316, 0.588316, 0.588316, 0.444456},
                {0.33, 0.35482, 0.411684, 0.453888, 0.47459, 0.5, 0.53099, 0.567926, 0.588316, 0.588316, 0.444456},
                {0.33, 0.35482, 0.411684, 0.426353, 0.445013, 0.46901, 0.5, 0.539678, 0.588316, 0.588316, 0.444456 },
                {0.330001, 0.357742, 0.385339, 0.39665, 0.411684, 0.432073, 0.460321, 0.5, 0.554987, 0.588316, 0.444456},
                {0.33, 0.372351, 0.372351, 0.372351, 0.376626, 0.390615, 0.411684, 0.445013, 0.5, 0.588316, 0.444456},
                {0.33, 0.365375, 0.365375, 0.365375, 0.365375, 0.365375, 0.365375, 0.376626, 0.411684, 0.5, 0.444456},
                {0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.555545}
        };

        List<Polygon> polygons = new ArrayList<Polygon>();
        for(int i = 0; i < xyCoord.length -1; i++){
            for(int j = 0; j < xyCoord[i].length -1; j++){
                Polygon polygon = new Polygon();
                polygon.add(new Point(new Coord3d(xzCoord[i], yzCoord[j], xyCoord[i][j]) ));
                polygon.add(new Point( new Coord3d(xzCoord[i], yzCoord[j]+0.1, xyCoord[i][j+1]) ));
                polygon.add(new Point( new Coord3d(xzCoord[i]+0.1, yzCoord[j]+0.1, xyCoord[i+1][j+1]) ));
                polygon.add(new Point( new Coord3d(xzCoord[i]+0.1, yzCoord[j], xyCoord[i+1][j]) ));
                polygons.add(polygon);
                System.out.println("Still Running");
            }
        }

        Shape surface = new Shape(polygons);
        surface.setColorMapper(new ColorMapper(new ColorMapRainbow(),
                surface.getBounds().getZmin(),
                surface.getBounds().getZmax(),
                new Color(1,1,1,1f)));
        surface.setWireframeDisplayed(true);
        surface.setWireframeColor(Color.BLACK);
        surface.setFaceDisplayed(true);
        System.out.println("A few moments...");

        Chart chart = new AWTChart(Quality.Nicest);
        chart.setViewMode(ViewPositionMode.FREE);
        chart.addMouseController();
        System.out.println("Finishing up...");
        chart.getScene().getGraph().add(surface);
        System.out.println("Done...");
        chart.open("Plot", new Rectangle(200,200,600,600));
    }
}


8sIJU.png
  • Вопрос задан
  • 375 просмотров
Решения вопроса 1
@Vindwo Автор вопроса
Решение оказалось простым - график можно двигать по оси Z с зажатой Правой Кнопкой Мыши.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Другая библиотека не решит проблему отсутствия знаний. А по Jzy3D целая брошюра есть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы