2016-10-06 34 views
0

我有一個填充了double值的40x40陣列,這些值對應於由Java中的2個矩陣組成的網格柵格。 我想繪製出一個表面以外的3D值,並且發現JZY3D庫似乎是合適的,但我不知道從哪裏開始以及如何對這種情節進行編碼。 任何與此圖書館合作的人都可以從何處着手提供良好建議?在Java中繪製網格柵格表面

回答

1

看起來像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

+0

謝謝您的回答,但好像我不會使用這個庫,因爲Maven倉庫需要被添加到遠程服務器,我沒有權限,不幸的是: - /你可能有關於如何執行與另一個庫的繪圖的建議? – borgmater