patch原理
patch函數
-
patch(X,Y,C)
使用 X 和 Y 的元素作爲每個頂點的座標,以創建一個或多個填充多邊形。patch 以您指定頂點的順序連接這些頂點。要創建一個多邊形,請將 X 和 Y 指定爲向量。要創建多個多邊形,請將 X 和 Y 指定爲矩陣,其中每一列對應於一個多邊形。C 決定多邊形的顏色。
-
patch(X,Y,Z,C)
使用 X、Y 和 Z 在三維座標中創建多邊形。要在三維視圖中查看這些多邊形,請使用 view(3) 命令。C 確定多邊形的顏色。
-
patch('XData',X,'YData',Y)
類似於 patch(X,Y,C),不同之處在於您不需要爲二維座標指定顏色數據。
-
patch('XData',X,'YData',Y,'ZData',Z)
類似於 patch(X,Y,Z,C),不同的是不需要爲三維座標指定顏色數據。
-
patch('Faces',F,'Vertices',V)
創建一個或多個多邊形,其中 V 指定頂點的值,F 定義要連接的頂點。當有多個多邊形時,僅指定唯一頂點及其連接矩陣可以減小數據大小。爲 V 中的每個行指定一個頂點。要創建一個多邊形,請將 F 指定爲向量。要創建多個多邊形,請將 F 指定爲矩陣,其中一行對應於一個多邊形。不要求每個面都具有相同的頂點數。要指定不同數量的頂點,請以 NaN 值填充 F。
-
patch(S)
使用結構體 S 創建一個或多個多邊形。結構體字段對應於補片屬性名稱,字段值對應於屬性值。例如,S 可以包含字段 Faces 和 Vertices。
-
patch(___,Name,Value)
創建多邊形,並使用名稱-值對組參數指定一個或多個補片屬性。補片是包含所有已創建多邊形的數據的對象。您可以使用上述語法中的任意輸入參數組合指定補片屬性。例如,‘LineWidth’,2 將所有多邊形的輪廓寬度設置爲 2 磅。
-
patch(ax,___)
將在由 ax 指定的座標區中,而不是當前座標區 (gca) 中創建補片。選項 ax 可以位於前面的語法中的任何輸入參數組合之前。
-
p = patch(___)
返回包含所有多邊形的數據的補片對象。使用 p 可在創建補片對象後查詢並修改其屬性。有關屬性和說明的列表,請參閱 Patch 屬性。
實例
在此使用 patch(‘Faces’,F,‘Vertices’,V) 函數繪製長方體。
定義頂點
長方體的頂點定義如下圖所示,紅色編號爲頂點的編號。
連接順序
定義連接順序如下,對應上圖看
faces = [1 2 3 4
5 6 7 8
4 3 6 5
3 2 7 6
2 1 8 7
1 4 5 8];
連接順序爲:
- 上面1->2->3->4頂點
- 下面->5->6->7->8頂點
- 後面->4->3->6->5頂點
- 右面->3->2->7->6頂點
- 前面->2->1->8->7頂點
- 左面->1->4->5->8頂點
頂點對應點座標
各頂點座標如下,其中x表示按照圖中頂點ID排序的情況下,各頂點的x座標,同理可得y,z座標向量,其中SL爲尺度,即長寬高。
x = 0.5*SL(1)*[-1 1 1 -1 -1 1 1 -1]';
y = 0.5*SL(2)*[1 1 1 1 -1 -1 -1 -1]';
z = 0.5*SL(3)*[-1 -1 1 1 1 1 -1 -1]';
verts = zeros(3,8);
for i = 1:8
verts(1:3,i) = [x(i);y(i);z(i)];
end
最終代碼
SL = [1;1;1];
x = 0.5*SL(1)*[-1 1 1 -1 -1 1 1 -1]';
y = 0.5*SL(2)*[1 1 1 1 -1 -1 -1 -1]';
z = 0.5*SL(3)*[-1 -1 1 1 1 1 -1 -1]';
verts = zeros(3,8);
for i = 1:8
verts(1:3,i) = [x(i);y(i);z(i)];
end
faces = [1 2 3 4
5 6 7 8
4 3 6 5
3 2 7 6
2 1 8 7
1 4 5 8];
patch('Faces',faces,'Vertices',verts','FaceAlpha',0.1)
view(3)
效果
呈現的效果如下:
長方體的頂點定義如下圖所示,紅色編號爲頂點的編號。
如果想要旋轉和移動,請移步博客:MATLAB——patch繪製長方體(cuboid)+長方體平移+長方體旋轉