| 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 | ![]() |