java - 在Java中绘制网格表面

标签 java plot mesh surface jzy3d

我有一个 40x40 数组,其中填充有 double 值,这些值对应于 Java 中由 2 个矩阵组成的网格。 我想用 3D 中的这些值绘制一个表面,并发现 JZY3D似乎合适的库,但我不知道从哪里开始以及如何编写这种情节。 有人使用过这个库并且可以就从哪里开始提供好的建议吗?

最佳答案

看起来像jzy3D的SurfaceDemo。 您需要创建曲面而不是 buildOrthonormal(SurfaceDemo.java 中的第 36 行)。

答:https://stackoverflow.com/a/8339474

算法:https://www.mathworks.com/help/matlab/ref/surf.html

double[][] Z = new double[40][40];
...
List<Polygon> polygons = new ArrayList<Polygon>();
for(int i = 0; i < zq.length -1; i++){
    for(int j = 0; j < zq[0].length -1; j++){
        Polygon polygon = new Polygon();
        polygon.add(new Point(new Coord3d(i, j, Z[i][j])));
        polygon.add(new Point(new Coord3d(i, j+1, Z[i][j+1])));
        polygon.add(new Point(new Coord3d(i+1, j+1, Z[i+1][j+1])));
        polygon.add(new Point(new Coord3d(i+1, j, Z[i+1][j])));
        polygons.add(polygon);
    }
}
final Shape surface = new Shape(polygons);
surface.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), surface.getBounds().getZmax(), new Color(1, 1, 1, .5f)));
surface.setFaceDisplayed(true);
surface.setWireframeDisplayed(true);
// Create a chart and add it
Chart chart = new Chart();
chart.getAxeLayout().setMainColor(Color.WHITE);
chart.getView().setBackgroundColor(Color.BLACK);
chart.getScene().add(surface);
ChartLauncher.openChart(chart);

result

关于java - 在Java中绘制网格表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898717/

相关文章:

在 Racket 中绘制 3D 图形

ios - 在 ios 中使用 opencv 用网格变换图像的特定区域

matlab - 如何在 Matlab 中绘制箭头?

plot - 如何将 chartjs 作为 es6 模块导入?

javascript - WebGL 更新动态网格

geometry - 如何将点映射到扭曲的网格上

java - 单例意味着哈希码总是返回相同的吗?

java - 在 maven 中构建 scala-java-antlr 项目会导致运行时出现 ClassDefNotFoundError

java - 如何在 Try/Catch 中为错误的 XML 文档抛出 Java SAXParseException

java - Python Java 管道 : dev/stdin file not found exception