作者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