2017-03-09 67 views
0

我需要使用R.劇情一個表面上,然後創建

我具有矩陣「節點」的3維曲線圖來表示表面熱圖(NX3),其具有每行中的X,Y, N個點的每一個的z座標和在每行中具有作爲三角形的頂點的3個點的索引的矩陣「三角形」(M×3)。

目前我可以用RGL

plot3d(nodes) 

所以我想要做的就是代表這個表面只繪製了點,我知道,在Matlab中有一些不錯的功能,但我找不到R中的任何等價物!

然後我的目標是領導三角表面上的熱圖或顏色表,比如給予一定的功能在每個節點

+0

我不太用R,但我想這很容易做到。 [這裏] [1]是使用矩形網格的SO上的答案,但它可能適用於您擁有的三角形網格。你可以發佈一些代碼,以便我可以生成一個類似於你的和exeriment的網格? [1]:http://stackoverflow.com/questions/3786189/r-4d-plot-x-y-z-colours – 2017-03-09 16:22:11

+0

發佈那個答案的人我鏈接使用rgl提到所以也許你可以使用它。我剛剛搜索了「R中的4d繪圖」,並提出了一些結果,如果你還沒有找到它,這可能會幫助你。 – 2017-03-09 16:23:45

+0

謝謝Julian,我添加了一個鏈接到一個gdrive存儲庫,我上傳了使用matlab的文件和輸出! – MarioB

回答

1

的價值,我從here偷了這些代碼,只是調整了它適合你目的。我稱三角形T和_T。每個三角形由三個座標(x1,y1,z1),(x2,y2,z2)和(x3,y3,z3)組成,每個三角形都有一個與其顏色對應的數字c。這個例子只繪製了兩個三角形。在mymesh結構中,三角形存儲爲(x1,_x1,y1,_y1,z1,_z1,...,z3,_z3,c,_c)。尺寸爲2x10,因爲有兩個三角形,三角形用10個數字表示,九個用於座標,一個用於顏色。

mymesh <- structure(c(0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,100,200), 
        .Dim = c(2, 10), 
        .Dimnames = list(NULL, c("x1", "y1", "z1", 
               "x2", "y2", "z2", 
               "x3", "y3", "z3", 
               "value") 
        ) 
) 

library(rgl) 
rgl.open() 
i <- 1 
vertices <- c(mymesh[i,1:3],1,mymesh[i,4:6],1,mymesh[i,7:9],1) 
indices <- c(1, 2, 3) 
shade3d(tmesh3d(vertices,indices) , col=1) 
bg3d(color = "white") 
for(i in 2:2){ 
    vertices <- c(mymesh[i,1:3],1,mymesh[i,4:6],1,mymesh[i,7:9],1) 
    indices <- c(1, 2, 3) 
    shade3d(tmesh3d(vertices,indices) , col= i) 
} 

輸出是

two 3d triangles that can be rotated and stuff

有可能是一個更好的辦法。我並不真正知道R,並且座標似乎以一種愚蠢的方式存儲,因爲R使用column major order.您可以更改它,以便以更自然的方式輸入座標,即(x1,y1,z1,x2,..._y3,_z3,_c),然後將其轉置到結構中。

相關問題