2013-12-23 69 views
0

我需要的是一個3D表面上的點的3D功能圖。我怎樣才能實現它?在Java中繪製3D功能和點

一開始我嘗試jzy3d但事實證明,它是這樣一個基本任務(尤其是因爲jzy3d缺少代碼示例和依賴與JOGL可能是麻煩的)太多精力。所以我試了Java Surface Plot和功能表面部分 - 這是完美的。但是有可能添加(x,y,z)點..?我猜不會。在這種情況下,我可以使用哪些其他庫?

我知道這個問題可能會覺得偏離主題,但這種簡單的繪製是基本功能和this答案已經2歲的,所以..也許有更好的東西了嗎?

回答

2

我對於stackoverflow很新,所以也許我會引入一些新的(礦石也許是舊的)視圖。

您可以將您的三維點到二維點,我會以某種方式提交一段代碼,它(但也有不少)

//point a (3D) 
double ax = 3; 
double ay = 4; 
double az = 3; 

//point b (2D) 
double bx = 0; 
double by = 0; 

//assumtions 
double cx = 0; //offset 
double cz = 0; //offset 

double scalex = 0.5; 
double scalez = 0.5; 

//trafo 3D -> 2D 
bx = scalex * ax + cz; 
by = scalez * az + cz; 

我指的是http://en.wikipedia.org/wiki/3D_projection

用你所有的觀點來做這件事,你會看到繪製的圖表。

+0

我不想投射3D點。我想完全具有功能表面的三維繪圖,還有一些標記在其上的點。在3D中也是如此。 – alex

+0

我不確定你想如何在二維設備(屏幕)上顯示(繪圖)3D點...但是如果您調整參數cx/cz和scalex/scaley,您可以旋轉,縮放,平移(平移)在你的[預計]陰謀 –

+0

哦,這就是你的意思。投影點是可行的,但實現一個表面圖(http:// goo。gl/CteZjO)可以從頭開始移動/旋轉的方式太多了。我相信有圖書館會照顧它。 – alex

3

Orson Charts是一個新的專有庫,它將繪製不含JOGL依賴關係的曲面圖(它包含基於Java2D的軟件渲染器,因此除標準Java運行時外沒有依賴關係)。表面渲染器從函數y = f(x,z)獲取樣本,因此可能存在與您的要求相關的問題,您說:

但是是否可以添加(x,y,z)點..?

但是,使代碼適應這些數據並不困難,所以如果Orson Charts看起來像可以使用的東西,請聯繫我。

+0

大衛你好,我想能夠從網格中派生一個表面的x,y,z點,而不是被要求提供連續的功能。然而,我希望能夠做的另一件事(以及我認爲OP正在獲得的)是在同一個3D圖中有兩個「系列」 - 一個包含其他(可能不相關的)x,y,z散射點的表面同時呈現。奧森支持嗎?謝謝! –

1

有Jzy3d examples on Github顯示如何繪製曲面和散點圖。

你會看到Maven的配置是相當簡單的,你應該簡單地聲明一個依賴於jzy3d(JOGL被及物動詞進口):

<dependencies> 
    <dependency> 
     <groupId>org.jzy3d</groupId> 
     <artifactId>jzy3d-api</artifactId> 
     <version>0.9.2-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

你只需要申報Jzy3d的存儲庫作爲跟隨

<repositories> 
    <repository> 
    <id>jzy3d-snapshots</id> 
    <name>Jzy3d Snapshots</name> 
    <url>http://maven.jzy3d.org/snapshots</url> 
    </repository> 
    <repository> 
    <id>jzy3d-releases</id> 
    <name>Jzy3d Releases</name> 
    <url>http://maven.jzy3d.org/releases</url> 
    </repository> 

如果給出的示例不夠用,您可能還會看看developer guide