我需要使用R.劇情一個表面上,然後創建
我具有矩陣「節點」的3維曲線圖來表示表面熱圖(NX3),其具有每行中的X,Y, N個點的每一個的z座標和在每行中具有作爲三角形的頂點的3個點的索引的矩陣「三角形」(M×3)。
目前我可以用RGL
plot3d(nodes)
所以我想要做的就是代表這個表面只繪製了點,我知道,在Matlab中有一些不錯的功能,但我找不到R中的任何等價物!
然後我的目標是領導三角表面上的熱圖或顏色表,比如給予一定的功能在每個節點
我需要使用R.劇情一個表面上,然後創建
我具有矩陣「節點」的3維曲線圖來表示表面熱圖(NX3),其具有每行中的X,Y, N個點的每一個的z座標和在每行中具有作爲三角形的頂點的3個點的索引的矩陣「三角形」(M×3)。
目前我可以用RGL
plot3d(nodes)
所以我想要做的就是代表這個表面只繪製了點,我知道,在Matlab中有一些不錯的功能,但我找不到R中的任何等價物!
然後我的目標是領導三角表面上的熱圖或顏色表,比如給予一定的功能在每個節點
的價值,我從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)
}
輸出是
有可能是一個更好的辦法。我並不真正知道R,並且座標似乎以一種愚蠢的方式存儲,因爲R使用column major order.您可以更改它,以便以更自然的方式輸入座標,即(x1,y1,z1,x2,..._y3,_z3,_c)
,然後將其轉置到結構中。
我不太用R,但我想這很容易做到。 [這裏] [1]是使用矩形網格的SO上的答案,但它可能適用於您擁有的三角形網格。你可以發佈一些代碼,以便我可以生成一個類似於你的和exeriment的網格? [1]:http://stackoverflow.com/questions/3786189/r-4d-plot-x-y-z-colours – 2017-03-09 16:22:11
發佈那個答案的人我鏈接使用rgl提到所以也許你可以使用它。我剛剛搜索了「R中的4d繪圖」,並提出了一些結果,如果你還沒有找到它,這可能會幫助你。 – 2017-03-09 16:23:45
謝謝Julian,我添加了一個鏈接到一個gdrive存儲庫,我上傳了使用matlab的文件和輸出! – MarioB