Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
surface_properties
3次元エンティティプロパティの説明
説明
Surfaceエンティティはグラフィックエンティティ階層の葉です.
この型のエンティティの元には,
プロットを行う関数またはデータの入力手段により
2つのクラス:Plot3d
および
Fac3d
が現れます.
Fac3d
および Plo3d
エンティティは
似ていますが,Fac3d
はより完全で,
Plot3d
よりも多くのオプションを指定できます.
Fac3d
エンティティを常に有するようにするには,
plot3d
を使用する前に
genfac3d
により行列を事前に構築するか,
surf
コマンドを使用します.
以下にsurfaceエンティティに含まれるプロパティを示します:
- parent:
このフィールドには親のハンドルが含まれます. polylineエンティティの親は
"Axes"
型または"Compound"
型です.- children:
このプロパティにはこのハンドルの
children
のベクトルが含まれます. しかし,現在,surfaceハンドルにはchildren
がありません.- visible:
このフィールドはこのエンティティの
visible
プロパティの値を有します. 値は"on"
または"off"
となります. デフォルトで polyline は可視であり,プロパティの値は"on"
となります."off"
の場合, この3次元グラフィックは画面に描画されません.- surface_mode:
このフィールドは
surface_mode
プロパティのデフォルト値を有します. その値は"on"
(曲面を描画 ) または"off"
(曲面を描画しない)とします.- foreground:
color_mode >= 0
の場合, このフィールドは縁を描画する際に色インデックスを有します. そうでない場合,foregroundは全く使用されません. foregounrdの値には(カレントのカラーマップに基づく)整数の色インデックスを指定します.- thickness:
このプロパティは正の実数で,小平面の輪郭の幅をピクセル単位で指定します. 実際の表示幅は指定した幅を最も近い整数に丸めることにより定義されます. 唯一の例外はベクトル単位のエキスポートで,全体の
thickness
の値が考慮されます.- mark_mode:
このフィールドはsurfaceの
mark_mode
プロパティのデフォルト値を有します. この値は"on"
(マーカを描画 drawn) または"off"
(マーカを描画しない)となります.- mark_style:
mark_style
プロパティの値はmark_mode
プロパティが"on"
の場合に, 使用するマーカの種類を選択するために使用されます. この値は[0 14]の範囲の整数で,それぞれ以下の意味があります : ドット,プラス,十字,星,塗りつぶした菱形, 上向き三角形, 下向き三角形, 菱形プラス,円,アスタリスク, 正方形,右向き三角形,左向き三角形およびペンタグラム. 以下の図は,マーカのアスペクトがmark_style
,mark_foreground
およびmark_background
プロパティに依存する ことを示します.- mark_size_unit:
このフィールは
mark_size_unit
プロパティのデフォルト値 を有します.mark_size_unit
が"point"
に設定された場合,mark_size
の値はポイント単位で直接 指定されます.mark_size_unit
に"tabulated"
が 指定された場合,mark_size
はfont size配列に相対的に 計算されます: この場合,この値は, 8pt, 10pt, 12pt, 14pt, 18pt および 24pt を意味する [0 5]の範囲の整数とします. xrectおよび Scilabのネーティブ関数はtabulated
モードをデフォルトとします; plot関数を使用する場合,point
モードが自動的に有効となります.- mark_size:
mark_size
プロパティは,mark_mode
プロパティが"on"
の時, マーカの大きさを選択するために使用されます. この値は, 8pt, 10pt, 12pt, 14pt, 18pt および 24pt を意味する [0 5]の範囲の整数です.- mark_foreground:
このフィールドは,マーカの縁の色である
mark_foreground
プロパティの値を有します.この値は(カレントのcolor_mapに関連する)色インデックス または透過エッジを意味する 0 とします.- mark_background:
このフィールドは,マーカの縁の色である
mark_foreground
プロパティの値を有します.この値は(カレントのcolor_mapに関連する)色インデックス または透過エッジを意味する 0 とします.- data:
このフィールドは,"3次元"型の
tlist
データ構造体 を定義します. この構造体は, x, yおよびz座標をそれぞれdata.x
,data.y
およびdata.z
に含む各要素の行および列インデックスから構成されます. 実際のcolorベクトルまたは行列が指定された場合,data.color
という名前の相補フィールドが利用可能です. 指定されない場合,data.color
は利用できません. 曲面はcolor_mode
およびcolor_flag
プロパティに基づき塗りつぶされます.- color_mode:
[-size(colormap) ; size(colormap)]
の範囲の整数で,color_flag
の値が0
の時, 小平面の色を定義します. 前記のように,color_mode > 0
の時,foreground
色により,縁が描画されます.color_mode
が0
に設定された場合, 曲面のメッシュが描画されます: 表面には色がありません. 最後に,color_mode < 0
の時, 表面は色-color_mode
で塗られますが, 縁は表示されません.- color_flag:
このフィールドは小平面の色を設定するために使用される アルゴリズムを指定する際に使用されます.
color_mode
,foreground
およびhiddencolor
に 関する規則はこの場合にも適用されます.color_flag == 0
全ての小平面はcolorインデックスおよび
color_mode
で定義された手法により 塗りつぶされます(上記参照).
color_flag == 1
全ての小平面は
z
に比例する小平面毎に1つのインデックスを 用いて塗りつぶされます.z
の最小値はインデックス1の色で塗られ,z
の最大値は最も大きなインデックスの色で塗られます. 加えて,小平面の縁もcolor_mode
の値に基づき 塗られます(上記参照).
残る3つのケース(
color_flag
== 2,3 または 4
)は,Fac3d
エンティティを指定した場合のみ 利用可能です. 次に,data.color
の値は(存在する場合,)小平面の色を (カレントのカラーマップのインデックスで) 設定するために使用されます そうでない場合, 小平面を塗りつぶす際に カレントのcolor_mode
が使用されます.color_flag == 2 ('フラット' シェーディング)
全ての小平面は
data.color
プロパティで 指定した色インデックスにより塗りつぶされます (小平面毎に1つの色が必要):data.color
はcolor
ベクトルを 有します:color(i)
が正の場合, 小平面i
の色を指定します. 小平面の境界はカレントの線種と色で描画されます.color(i)
が負の場合,色id-color(i)
が使用され,小平面の境界は描画されません.data.color
は大きさ(nf,n)のcolor行列を 有します.ただし,n
は小平面の数,nf
はポリゴン小平面を定義する点の数を意味します.nf
個の頂点が各小平面を定義する場合, アルゴリズムは(colorインデックス行列の)各色インデックスの平均値
を計算します: 同じ小平面のnf
個の頂点は同じ色インデックスの値を有します.
color_flag == 3 ('補間' シェーディング)
小平面は頂点の色を補間した結果に基づき塗りつぶされます. 頂点の色のインデックスは
data.color
プロパティで 指定されます (各頂点毎に1つの色が必要). 以下の2種類のケースがありえます:data.color
がcolors
ベクトルを有する場合 : この場合, 補間シェーディングモードを完成するにはデータが少なすぎます. この処理を行うには,大きさ (nf,n) のcolor行列が必要です (ただし,n
は小平面の数,nf
はポリゴン小平面を定義する点の数を意味します). 各小平面について,このアルゴリズムは, 単一の小平面のcolorインデックスの値を,小平面の境界を定義するnf
個の頂点の色インデックスにコピーします.data.color
が大きさ(nf,n)の色行列を有する場合 (前記のnf
およびn
の定義参照), 補間シェーディングモードはこれらの色インデックスにより完了することが できます.
color_flag == 4 (Matlabライクな 'フラット' シェーディング)
color_flag==2
と同じですが,data.color
が行列の場合,わずかな違いがあります. 全ての小平面はdata.color
プロパティで 指定された色インデックスにより塗りつぶされます (各小平面について1つの色が必要). 以下の2つのケースがありえます:data.color
がcolors
ベクトルを有する場合 :color(i)
が正の場合, この値は小平面i
の色を指定し, 小平面の境界はカレントの線種と色で描画されます.color(i)
が負の場合, 色ID-color(i)
が使用され,小平面の境界は 描画されません.data.color
は大きさ(nf,n)の色行列を有します. ただし,n
は小平面の数,nf
はポリゴン小平面を定義する点の数を意味します.nf
個の頂点が各小平面を定義する場合, アルゴリズムはパッチ(小平面)を定義する最初の頂点の色を使用します.
- cdata_mapping:
Fac3dハンドルの仕様
.'scaled'
または'direct'
を値とする文字列.data.color
が設定されている場合, 各インデックス色データは各頂点に単一の値を指定します.cdata_mapping
は, これらのインデックスをカレントのカラーマップに線形にマップするようにスケーリングするか ('scaled'
モード), このカラーマップを直接参照するか('direct
' モード)のどちらかを 選択します. このプロパティはcolor_flag
が2
,3
または4
に等しい時に有用です.- hiddencolor:
このフィールドは曲面の小平面の背景を描画する際に使用される 色インデックスを有します. この値は正の整数(カレントのカラーマップの色インデックス)とします. この値が負の場合,"visible"平面以外に同じ色が背面側に適用されます.
- clip_state:
このフィールドはsurfaceの
clip_state
プロパティの 値を有します. 値は以下となります:"off"
surfaceはクリップされません."clipgrf"
surfaceはAxesボックスの外側でクリップ されます."on"
surfaceはclip_boxプロパティで 指定された矩形の外側でクリップされます.
- clip_box:
このフィールドは
clip_box
プロパティを定義します. clip_state が "off" の場合, デフォルトで,この値は空の行列です. その他の場合, ベクトル[x,y,w,h]
(左上の点 幅 高さ) は表示する曲面の部分を定義しますが,clip_state
プロパティの値が変更されます.- user_data:
このフィールドはsurfaceデータ構造体に任意のScilab変数を 保存し,再度取得する際に使用できます.
例
//図を作成 t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); [xx,yy,zz]=genfac3d(t,t,z); plot3d([xx xx],[yy yy],list([zz zz+4],[4*ones(1,400) 5*ones(1,400)])) h=get("hdl") //カレントのエンティティ(ここではsurface)のハンドルを取得 a=gca(); //get current axes a.rotation_angles=[40,70]; a.grid=[1 1 1]; //グリッドを作成 a.data_bounds=[-6,0,-1;6,6,5]; a.axes_visible="off"; //軸は隠されている a.axes_bounds=[.2 0 1 1]; f=get("current_figure"); //親の図のハンドルを取得 f.color_map=hotcolormap(64); //図のカラーマップを変更 h.color_flag=1; //z に基づく色 h.color_mode=-2; //小平面境界を削除 h.color_flag=2; //指定色に基づく色 h.data.color=[1+modulo(1:400,64),1+modulo(1:400,64)]; //影付き h.color_flag=3; scf(2); // 2番目のウインドウを作成し,surfコマンドを使用 subplot(211) surf(z,'cdata_mapping','direct','facecol','interp') subplot(212) surf(t,t,z,'edgeco','b','marker','d','markersiz',9,'markeredg','red','markerfac','k') e=gce(); e.color_flag=1 // 高度 (z座標)に比例する色インデックス e.color_flag=2; // デフォルトモードに戻す e.color_flag= 3; // 補間影モード (data.colorフィールドが指定されていないため,デフォルトの青色に基づく)
作者
Djalel ABDEMOUCHE & F.Leray
<< surf | 3d_plot | annotation >> |