| MATLAB Function Reference | ![]() |
Syntax
surface(Z) surface(Z,C) surface(X,Y,Z) surface(X,Y,Z,C) surface(...'PropertyName',PropertyValue,...) h = surface(...)
surface 是一些用來建立曲面繪圖物件的低階指令。 x- 與 y-座標為每個元素的位置,z-座標為每個元素的值。
surface(Z)
根據矩陣 Z 來畫出曲面圖, Z 是一個定義在方形格子點上的單值函數(single-valued function)。
surface(Z,C)
根據矩陣 Z 來畫出曲面圖且根據矩陣 C 來決定顏色 (參考 "Examples")。
surface(X,Y,Z)
以 C = Z,所以顏色將與曲面的高度有關係。
surface(X,Y,Z,C)
根據矩陣 X 、 Y 、 Z來繪製曲面圖,顏色為矩陣 C 控制。
surface(x,y,Z), surface(x,y,Z,C)
以向量置換前兩個矩陣,且 length(x) = n , length(y) = m , [m,n] = size(Z)。在這種情況下,頂點的座標為 (x(j),y(i),Z(i,j)), x 會對應到 Z 的行和 y 會對應到 Z 的列。可參考 surf 有更完整的說明。
surface(...' PropertyName',PropertyValue,...)
X 、 Y 、 Z 與 C 可以設定額外的曲面屬性,定義在 "Surface Properties"。
Remarks
與高階指令不同的是(如 surf 或 mesh), surface 不會遵照圖形的設定以及軸 NextPlot 的性質,它會簡單的把曲面物件加進目前的座標軸中。
如果你沒有指定顏色於矩陣 C ,MATLAB 會用矩陣 Z 來決定曲面的顏色。在這種情況下,顏色與 Z 中的值會有關係,所以你也可以另外的在指定顏色。
您可以以屬性名稱/屬性的值、結構陣列與異質陣列來指定屬性(參考 set 與 get )。
surface 提供了更方便的型式讓你可以去操控屬性的名稱,如 XData 、 YData 、 ZData 、 CData 這些性質。例如:
surface('XData',X,'YData',Y,'ZData',Z,'CData',C)
surface(X,Y,Z,C)
surface(Z)
surface('XData',[1:size(Z,2)],...
'YData',[1:size(Z,1)],...
'ZData',Z,...
'CData',Z)
axis 、 caxis 、 colormap 、 hold 、 shading 與 view 會設定一些繪圖的性質來改變曲面。在建立它們之後你也可以用 set 與 get 來設定及查詢曲面的屬性值。
Example
這個範例會用 peaks M-file 產生資料來建立曲面,用一張小丑的圖作背景。 ZData 是一個 49-by-49 的陣列, CData 是一個 200-by-320 的陣列。你必須在不同的維度中,使用 ZData 與 CData 來設定曲面的 FaceColor 對於 texturemap 。
load clown surface(peaks,flipud(X),... 'FaceColor','texturemap',... 'EdgeColor','none',... 'CDataMapping','direct') colormap(map) view(-35,45)
![]()
用 surface(Z,C) 可以很容易的使用成對的"屬性名稱/屬性的值"。
由於小丑的資料 (X) 可以看做 image 的命令,MATLAB 會作直接的 CDataMapping。這個範例是用 direct 來設定 CDataMapping 的屬性。
See Also
ColorSpec, mesh, patch, pcolor, surf
Object Hierarchy
Setting Default Properties
set(0,'DefaultSurfaceProperty',PropertyValue...) set(gcf,'DefaultSurfaceProperty',PropertyValue...) set(gca,'DefaultSurfaceProperty',PropertyValue...)
Property 是屬性的名稱以及 PropertyValue 是屬性值,用 set 與 get 可以去取得修改這些性質。
Property List
| 屬性名稱 |
屬性描述 |
屬性值 |
| 物件的定義 | ||
XData |
頂點的 x-座標 |
vector or matrix |
YData |
頂點的 y-座標 |
vector or matrix |
ZData |
頂點的 z-座標 |
matrix |
| 指定顏色 | ||
CData |
顏色的資料 |
Values: scalar, vector, or matrix Default: [] empty matrix |
CDataMapping |
CData 的顏色對應 |
Values: scaled, directDefault: scaled |
EdgeColor |
邊的顏色 |
Values: ColorSpec, none, flat, interpDefault: ColorSpec |
FaceColor |
面的顏色 |
Values: ColorSpec, none, flat, interpDefault: ColorSpec |
MarkerEdgeColor |
標記邊的顏色 |
Values: ColorSpec, none, autoDefault: auto |
MarkerFaceColor |
標記面的顏色 |
Values: ColorSpec, none, autoDefault: none |
| 指定透明度 |
||
AlphaData |
透明的資料 |
m-by-n matrix of double or uint8 |
AlphaDataMapping |
對應到透明的方法 |
none, direct, scaledDefault: scaled |
EdgeAlpha |
區塊邊的透明度 |
scalar, flat, interpDefault: 1 (opaque) |
FaceAlpha |
區塊面的透明度 |
scalar, flat, interp, textureDefault: 1 (opaque) |
| 控制光的影響度 | ||
AmbientStrength |
周圍光的強度 |
Values: scalar >=0 and <=1Default: 0.3 |
BackFaceLighting |
表面上光的強度 |
Values: unlit, lit, reverselitDefault: reverselit |
DiffuseStrength |
發散光的強度 |
Values: scalar >=0 and <=1Default: 0.6 |
EdgeLighting |
邊的光線控制方法 |
Values: none, flat, gouraud, phongDefault: none |
FaceLighting |
面的光線控制方法 |
Values: none, flat, gouraud, phongDefault: none |
NormalMode |
MATLAB-產生或使用者指定的正規向量 |
Values: auto, manualDefault: auto |
SpecularColorReflectance |
混合的反射光 |
Values: scalar 0 to 1Default: 1 |
SpecularExponent |
粗操表面的反射 |
Values: scalar >= 1Default: 10 |
SpecularStrength |
反射光的強度 |
Values: scalar >=0 and <=1Default: 0.9 |
VertexNormals |
頂點正規的向量 |
Values: matrix |
| 邊與標記的定義 | ||
LineStyle |
選擇線條的風格Select from five line styles. |
Values: -, --, :, -., noneDefault: - |
LineWidth |
邊的寬度(單位為點) |
Values: scalar Default: 0.5 points |
Marker |
標記的圖案 |
Values: see Marker propertyDefault: none |
MarkerSize |
標記的大小(單位為點) |
Values: size in points Default: 6 |
| 外型的控制 | ||
Clipping |
剪裁至軸上的矩形 |
Values: on, offDefault: on |
EraseMode |
著色以及抹去曲面的方法 (可用在動畫製作) |
Values: normal, none, xor, backgroundDefault: normal |
MeshStyle |
指定是否要畫全部的邊線或只是行或列的邊 |
Values: both, row, columnDefaults: both |
SelectionHighlight |
強化被選擇的曲面 |
Values: on, off Default: on |
Visible |
控制曲面是否為可見 |
Values: on, off Default: on |
| 控制物件的使用 | ||
HandleVisibility |
決定曲面是否可以被其他函式控制 |
Values: on, callback, offDefault: on |
HitTest |
決定曲面是否可以變成目前的物件(可參考CurrentObject ) |
Values: on, off Default: on |
| 回應程序的執行 | ||
|
指定如何去控制回應程序的中斷 |
Values: cancel, queueDefault: queue |
|
定義一個可以經由滑鼠的按下就可以執行的回應程序 |
Values: string Default: '' (empty string) |
|
當曲面建立時就會執行回應程序 |
Values: string Default: '' (empty string) |
|
當曲面刪除時就會執行回應程序 (可經由 close 或 delete 刪除) |
Values: string Default: '' (empty string) |
|
決定回應程序使否可以被中斷 |
Values: on, off Default: on (can be interrupted) |
|
結合文字的選單 |
Values: handle of a uicontextmenu |
| 曲面一般的資訊 | ||
Children |
曲面物件沒有孩子(children) |
Values: [] (empty matrix) |
Parent |
曲面物件的父母(parent) 一定是 axes 物件 |
Value: axes handle |
Selected |
指出曲面是否為"選擇"的狀態 |
Values: on, off Default: on |
Tag |
使用者指定的標籤 |
Value: any string Default: '' (empty string) |
Type |
繪圖物件的型態(唯讀) |
Value: the string 'surface' |
|
使用者指定的資料 |
Values: any matrix Default: [] (empty matrix) |
| surf2patch | Surface Properties | ![]() |