2016-10-06 4 views
0

Ich habe ein Array 40x40 gefüllt mit double Werte, die einem Mesh-Grid aus 2 Matrizen in Java entsprechen. Ich möchte eine Oberfläche aus diesen Werten in 3D plotten, und gefunden JZY3D Bibliothek, die geeignet scheint, aber ich weiß nicht, wo ich anfangen soll und wie diese Art von Handlung zu programmieren. Wer hat mit dieser Bibliothek gearbeitet und kann einen guten Rat geben, wo man anfangen soll?Plotten Mesh Gitteroberfläche in Java

Antwort

1

Es scheint wie SurfaceDemo jzy3D. Sie müssen Oberfläche statt BuildOrtonormal (Linie 36 in SurfaceDemo.java) erstellen.

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

Algorithmen: 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

+0

Vielen Dank für Ihre Antwort, aber scheint, wie ich diese Bibliothek verwenden würde nicht, weil die Maven-Repository zu dem hinzugefügt werden muss Remote-Server, für den ich keine Berechtigung habe, leider: -/Haben Sie vielleicht einen Tipp, wie Sie mit einer anderen Bibliothek plotten können? – borgmater