作者colinslik (紳士-M)
站內MATLAB
標題[繪圖] 由已知點畫三角形
時間Thu Mar 29 01:11:03 2012
我目前有3個3*n矩陣,一個存頂點的X、Y、Z座標,一個存RGB值,一個存三角形
的三個頂點編號,下面是matlab裡看到的樣子
Matrix A
__ __
| 0.153 2.202 .... | X座標
| 0.325 1.147 .... | Y座標
| 0.223 1.511 .... | Z座標
__ __
Matrix B
__ __
| 128 221 ... | R
| 214 115 ... | G
| 255 245 ... | B
__ __
Matrix C
__ __
| 0 1 2 ... | 頂點1
| 1 3 3 ... | 頂點2
| 2 2 0 ... | 頂點3
__ __
矩陣內容大概是這樣,我希望可以用一個迴圈去一行一行讀出Matrix C中的3個頂點,再
用那些編號去讀Matrix A中的座標,然後一次畫一個三角形在圖上,一直循環到所有
Matrix C中的三角形都被畫在圖上為止。
然後,由於input中可能不包含Matrix B的資訊,所以若Matrix B是空矩陣,需要可以
透過Z值來表示深淺顏色,不知道哪個指令能達到這個要求呢?
目前試過Trimesh 但是似乎不能一次只給他一個點,我是這樣打
trimesh(tri,A(1,1),A(2,1),A(3,1)) 但是圖上什麼都沒有,也試過plot3,但是不管是用
plot3(A(1,:),A(2,:),A(3,:)) 或是 plot3(A(1,1),A(2,1),A(3,1))都畫不出東西
唯一有東西出來的是trimesh(tri,A(1,:),A(2,:),A(3,:)),但是這個畫法沒辦法照我要
的順序畫出三角形,因為最近剛學matlab,有非常多的東西不懂,希望各位能幫忙解答一
下,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.253.149
1F:推 vincent59:我之前是用line指令 03/29 01:42
2F:推 vincent59:你頂點的定義為何??? 03/29 01:54
3F:→ vincent59:不用line 用patch 好像可以 03/29 01:54
4F:→ colinslik:頂點只是相對位置而已,我是想說之後再做一般化 03/29 04:08
5F:推 sunev:用patch 03/29 05:38
6F:→ colinslik:使用patch(X,Y,Z)的確能畫出我要的三角形,可是卻都畫在 03/29 13:49
7F:→ colinslik:Z=0的平面上,有檢查過Z是有值的,不知道是少了哪個指令 03/29 13:49
8F:→ colinslik:另外我用plot3畫直線+hold on畫出了我要的效果,但是另 03/29 13:50
9F:→ colinslik:個問題是,有辦法用內插方式,用3個頂點的RGB值去填滿 03/29 13:52
10F:→ colinslik:那個三角形包含的面積嗎? 謝謝 03/29 13:53
11F:→ mp19990920:patch(...)若輸入3個argument是patch(X,Y,C) 03/29 18:17
12F:→ mp19990920:你要畫在3維空間要用patch(X,Y,Z,C) 03/29 18:18
13F:→ mp19990920:其中C是頂點的顏色,設定patch的FaceColor參數為interp 03/29 18:20
14F:→ mp19990920:就會自動幫你內插好顏色 03/29 18:20
15F:推 vincent59:原來可以這樣用喔 03/29 18:43
16F:→ colinslik:謝謝,我趕快去試試看,有問題在麻煩各位幫忙了 03/29 21:17
17F:→ colinslik:不好意思,這次想問Matlab能不能做出旋轉時改變景深的效 03/30 01:29
19F:→ colinslik:出來的樣子,上面是有Z buffer的效果,是不是需要自己重 03/30 01:30
20F:→ colinslik:寫Matlab旋轉的部分才能達到這種效果呢? 03/30 01:31