matlab中patch函數的用法


 

 

描述:

    patch是個底層的圖形函數,用來創建補片圖形對象。一個補片對象是由其頂點坐標確定的一個或多個多邊形。用戶可以指定補片對象的顏色和燈光。

 

patch(X,Y,C

    添加已填充的二維補片到當前坐標軸。X和Y中的元素指定了多邊形的定點。如果X和Y是矩陣,MATLAB將每一列生成一個多邊形。C決定了補片的顏色,它可以是單個的ColorSpec,每個表面一個顏色,或每個定點一個顏色。如果C是1*3的向量,它將被看成是RGB三元組,直接指定顏色。

 

patch(X,Y,Z,C

    創建三維坐標下的補片。

 

patch(FV

    使用結構體FV來創建補片。FV包含如下的結構域:vertices、faces以及facevertexdata(可選)。這些結構域對應補片對象的Vertices、Faces和FaceVerticxCData屬性。

 

patch(‘PropertyName’,propertyvalue,...

    利用指定的屬性/值參數對來指定補片對象的所有屬性。除非用戶顯式的指定FaceColor和EdgeColor的值,否則,MATLAB會使用缺省的屬性值。該調用格式允許用戶使用Faces和Vertices屬性值來定義補片。

 

handle=patch(...

    返回創建的補片對象的句柄。

 

注意:

    不像fill或area這樣的高層創建函數,patch並不檢查圖形窗口的設置以及坐標軸的NextPlot屬性,它僅僅將補片對象添加到當前坐標軸。

    如果坐標數據不能定義封閉的多邊形,patch函數自動使多邊形封閉。數據能定理凹面或交叉的多邊形。然而,如果單個補片面的邊緣相互交叉,得到的面可能不會完全填充。在這種情況下,最好將面分解為更小的多邊形。

 

詳細說明patch的屬性:

    你可以注明這些屬性為:屬性名字和屬性值成對形式、結構矩陣和細胞矩陣。

    其中有兩個屬性是用來說明顏色的:

    CData:用在說明X、Y、Z坐標時(XData、YData、ZData)

    FaceVertexCData:用在說明頂點或聯接矩陣(Vertices和Faces)

 

    CData和FaceVertexCData屬性接受這樣的顏色數據:索引值、真彩色(RGB)值。(CData、FaceVertexCData)

   

    索引顏色數據可以表示整個色圖的直接索引值或線性映射到整個色圖的刻度值(caxis)。CDataMapping 決定了matlab如何翻譯索引顏色數據

顏色數據說明:

patch的顏色說明如下:

    所有面用同一個顏色;

    一個面一個顏色,即平面着色;

    一個頂點一個顏色,即插值着色;

   

    下面的表格說明了matlab如何解釋由CData、FaceVertexCData定義的顏色數據。

 

    [X,Y,Z]                    CData  

                     索引值            真彩色                  

      m*n             標量              1*1*3        所有面用同一個顏色,邊緣用同一個顏色

      m*n            1*n(n>=4)        1*n*3        一個面一個顏色,邊緣用一個顏色
      m*n              m*n             m*(n-3)     一個頂點一個顏色,面可以是平滑的一個顏色的或插                  值的,邊緣也可以是平滑的或插值的。

     頂點         面             FaceVertexCData

                             索引值          真彩色

     m*n          k*3         標量            1*3

     m*n          k*3          k*1            k*3               同上

     m*n          k*3          m*1            m*3

 

 

舉例:

    該例中使用兩種不同的方法來創建一個補片對象:

    指定x、y和z坐標以及顏色數據(XData、YData和ZData以及CData屬性)

    指定頂點,連接矩陣以及顏色矩陣(Vertices、Faces、FaceVertexCData以及FaceColor屬性)

 

    1、指定x、y和z坐標

    x=[0 0;0 1;1 1];

    y=[1 1;2 2;2 1];

    z=[1 1;1 1;1 1];

    tcolor(1,1,1:3)=[1 1 1];

    tcolor(1,2,1:3)=[.7 .7 .7];

    patch(x,y,z,tcolor)

注意每個面和其他面之間共用兩個頂點。

 

    2、指定定點和表面

    Vertices屬性包含定義補片的每一個定點的坐標,Faces屬性確定如何連接這些頂點來組成不判的每一個表面。在本例中,兩個頂點位於同一個位置,因此需要指定六個頂點。每一樣包含定點的x、y和z坐標。
    vert=[0 1 1;0 2 1;1 2 1;1 1 1];

    有兩個表面,按照指定的順序連接定點而成:

    fac=[1 2 3;1 3 4];

    指定表面的顏色,指定包含兩個RGB顏色的2*3的矩陣;

    tcolor=[1 1 1;.7 .7 .7];

    用戶必須設置FaceColor屬性為flat,通過指定Faces、Vertices、FaceVertexCData以及FaceColor屬性來創建

    補片對象:

    patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,'FaceColor','flat')

    結果如上圖所示。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM