0
我有一个填充了double
值的40x40阵列,这些值对应于由Java中的2个矩阵组成的网格栅格。 我想绘制出一个表面以外的3D值,并且发现JZY3D库似乎是合适的,但我不知道从哪里开始以及如何对这种情节进行编码。 任何与此图书馆合作的人都可以从何处着手提供良好建议?在Java中绘制网格栅格表面
我有一个填充了double
值的40x40阵列,这些值对应于由Java中的2个矩阵组成的网格栅格。 我想绘制出一个表面以外的3D值,并且发现JZY3D库似乎是合适的,但我不知道从哪里开始以及如何对这种情节进行编码。 任何与此图书馆合作的人都可以从何处着手提供良好建议?在Java中绘制网格栅格表面
看起来像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);
谢谢您的回答,但好像我不会使用这个库,因为Maven仓库需要被添加到远程服务器,我没有权限,不幸的是: - /你可能有关于如何执行与另一个库的绘图的建议? – borgmater