MATLAB Function Reference | ![]() ![]() |
表示
surfl(Z) surfl(X,Y,Z) surfl(...,'light') surfl(...,s) surfl(X,Y,Z,s,k) h = surfl(...)
詳細
関数 surfl
は、周囲光、拡散光、鏡面光モデルの組合わせに基づいて、シェーディングしたsurface を表示します。
surfl(Z) and surfl(X,Y,Z)
は、光源に対するデフォルトの方向とシェーディングモデルに対するデフォルトのライティング係数を使って、シェーディングされた3次元 Surface を作成します。X
, Y
, Z
は、Surface の x, y, z 成分を定義するベクトル、または、行列です。
は、Lightオブジェクトを使って、着色されていてライティングされているサーフェスを作成します。これは、デフォルトのライティング手法surfl(...,'cdata')と異なり、サーフェスの反射になるようにカラーデータを変更します。surfl(...,'light')
surfl(...,s)
は、光源の方向を指定します。s
は Surface から光源への方向を指定する2 要素または 3 要素のベクトルです。s
=
[sx
sy
sz]
、または、s
=
[azimuth elevation]
です。デフォルトの s
は、カレントの視点の方向から反時計周りに45°です。
surfl(X,Y,Z,s,k)
は、反射定数を指定します。k
は周囲光、拡散光、正反射、鏡面光係数の相対的な量を定義する 4 要素のベクトルです。k = [ka kd ks shine]
で、デフォルトは、[.55,.6,.4,10]
です。
h = surfl(...)
は、Surface グラフィックスオブジェクトのハンドル番号を出力します。
注意
より滑らかなカラーの変化のためには、線形の強度変化をもつカラーマップを使ってください(たとえば、gray
, copper
, bone
, pink
)。
T行列 X
, Y
, Z
の点の順序は、パラメトリックなサーフェスの内側と外側を定義します。サーフェスの反対側が光源を反射するようにするには、surfl(X',Y',Z')
を使ってください。サーフェスの法線ベクトルの計算法のため、surfl
は、最小でも 3行3列の行列を必要とします。
例題
カラーマップベースのライティングを使って、peaks
関数を表示します。
[x,
y] = meshgrid(-3:1/8:3); z = peaks(x,
y); surfl(x,
y,
z); shading interp colormap(gray); axis([-3 3 -3 3 -8 8])
![]()
デフォルト以外の視点の方向からライティングされたサーフェスをプロットします。
view([10 10]) grid on hold on surfl(peaks) shading interp colormap copper hold off
![]()
参考
![]() | Surface Properties | surfnorm | ![]() |