3次元エンティティプロパティの説明
Surfaceエンティティはグラフィックエンティティ階層の葉です.
この型のエンティティの元には,
プロットを行う関数またはデータの入力手段により
2つのクラス:Plot3d
および
Fac3d
が現れます.
Fac3d
および Plo3d
エンティティは
似ていますが,Fac3d
はより完全で,
Plot3d
よりも多くのオプションを指定できます.
Fac3d
エンティティを常に有するようにするには,
plot3d
を使用する前に
genfac3d
により行列を事前に構築するか,
surf
コマンドを使用します.
以下にsurfaceエンティティに含まれるプロパティを示します:
このフィールドには親のハンドルが含まれます.
polylineエンティティの親は"Axes"
型または
"Compound"
型です.
このプロパティにはこのハンドルのchildren
のベクトルが含まれます.
しかし,現在,surfaceハンドルにはchildren
がありません.
このフィールドはこのエンティティのvisible
プロパティの値を有します.
値は"on"
または "off"
となります.
デフォルトで polyline は可視であり,プロパティの値は
"on"
となります. "off"
の場合,
この3次元グラフィックは画面に描画されません.
このフィールドは surface_mode
プロパティのデフォルト値を有します.
その値は "on"
(曲面を描画
) または "off"
(曲面を描画しない)とします.
color_mode >= 0
の場合,
このフィールドは縁を描画する際に色インデックスを有します.
そうでない場合,foregroundは全く使用されません.
foregounrdの値には(カレントのカラーマップに基づく)整数の色インデックスを指定します.
このプロパティは正の実数で,小平面の輪郭の幅をピクセル単位で指定します.
実際の表示幅は指定した幅を最も近い整数に丸めることにより定義されます.
唯一の例外はベクトル単位のエキスポートで,全体の
thickness
の値が考慮されます.
このフィールドはsurfaceのmark_mode
プロパティのデフォルト値を有します.
この値は"on"
(マーカを描画
drawn) または "off"
(マーカを描画しない)となります.
mark_style
プロパティの値は
mark_mode
プロパティが"on"
の場合に,
使用するマーカの種類を選択するために使用されます.
この値は[0 14]の範囲の整数で,それぞれ以下の意味があります :
ドット,プラス,十字,星,塗りつぶした菱形,
上向き三角形, 下向き三角形, 菱形プラス,円,アスタリスク,
正方形,右向き三角形,左向き三角形およびペンタグラム.
以下の図は,マーカのアスペクトがmark_style
,
mark_foreground
および
mark_background
プロパティに依存する
ことを示します.
このフィールは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_mode
プロパティが"on"
の時,
マーカの大きさを選択するために使用されます.
この値は, 8pt, 10pt, 12pt, 14pt, 18pt および 24pt を意味する
[0 5]の範囲の整数です.
このフィールドは,マーカの縁の色であるmark_foreground
プロパティの値を有します.この値は(カレントのcolor_mapに関連する)色インデックス
または透過エッジを意味する 0 とします.
このフィールドは,マーカの縁の色であるmark_foreground
プロパティの値を有します.この値は(カレントのcolor_mapに関連する)色インデックス
または透過エッジを意味する 0 とします.
このフィールドは,"3次元"型のtlist
データ構造体
を定義します.
この構造体は,
x, yおよびz座標をそれぞれ
data.x
,data.y
および data.z
に含む各要素の行および列インデックスから構成されます.
実際のcolorベクトルまたは行列が指定された場合,
data.color
という名前の相補フィールドが利用可能です.
指定されない場合,data.color
は利用できません.
曲面はcolor_mode
およびcolor_flag
プロパティに基づき塗りつぶされます.
[-size(colormap) ; size(colormap)]
の範囲の整数で,
color_flag
の値が0
の時,
小平面の色を定義します.
前記のように, color_mode > 0
の時,
foreground
色により,縁が描画されます.
color_mode
が 0
に設定された場合,
曲面のメッシュが描画されます: 表面には色がありません.
最後に,color_mode < 0
の時,
表面は色-color_mode
で塗られますが,
縁は表示されません.
このフィールドは小平面の色を設定するために使用される アルゴリズムを指定する際に使用されます.
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
は大きさ(n,nf)のcolor行列を
有します.ただし,nf
は小平面の数,
n
はポリゴン小平面を定義する点の数を意味します.
n
個の頂点が各小平面を定義する場合,
アルゴリズムは(colorインデックス行列の)各色インデックスの
平均値
を計算します:
同じ小平面のn
個の頂点は同じ色インデックスの値を有します.
color_flag = 3 ('補間' シェーディング)
小平面は頂点の色を補間した結果に基づき塗りつぶされます.
頂点の色のインデックスはdata.color
プロパティで
指定されます (各頂点毎に1つの色が必要).
以下の2種類のケースがありえます:
data.color
が colors
ベクトルを有する場合 :
nf
は小平面の数,
n
はポリゴン小平面を定義する点の数を意味します).n
個の頂点の色インデックスにコピーします.data.color
が大きさ(n,nf)の色行列を有する場合
(前記の n
および nf
の定義参照),
補間シェーディングモードはこれらの色インデックスにより完了することが
できます.
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
は大きさ(n,nf)の色行列を有します.
ただし, nf
は小平面の数,
n
はポリゴン小平面を定義する点の数を意味します.
n
個の頂点が各小平面を定義する場合,
アルゴリズムはパッチ(小平面)を定義する最初の頂点の色を使用します.
Fac3dハンドルの仕様
.
'scaled'
または 'direct'
を値とする文字列.
data.color
が設定されている場合,
各インデックス色データは各頂点に単一の値を指定します.
cdata_mapping
は,
これらのインデックスをカレントのカラーマップに線形にマップするようにスケーリングするか
('scaled'
モード),
このカラーマップを直接参照するか('direct
' モード)のどちらかを
選択します.
このプロパティはcolor_flag
が 2
,3
または
4
に等しい時に有用です.
このフィールドは曲面の小平面の背景を描画する際に使用される 色インデックスを有します. この値は正の整数(カレントのカラーマップの色インデックス)とします. この値が負の場合,"visible"平面以外に同じ色が背面側に適用されます.
このフィールドはsurfaceのclip_state
プロパティの
値を有します. 値は以下となります:
"off"
surfaceはクリップされません.
"clipgrf"
surfaceはAxesボックスの外側でクリップ
されます.
"on"
surfaceはclip_boxプロパティで
指定された矩形の外側でクリップされます.
このフィールドはclip_box
プロパティを定義します.
clip_state が "off" の場合, デフォルトで,この値は空の行列です.
その他の場合, ベクトル [x,y,w,h]
(左上の点 幅 高さ)
は表示する曲面の部分を定義しますが,
clip_state
プロパティの値が変更されます.
このフィールドは拡散色を面の色に使用できるように
する際に使用されます.デフォルト値は,"on"
です.
このフィールドは, 面の輝度レベルを定義します. このパラメータは,
面に拡散する輝度色を制御します.
任意の正の値を使用可能です.
[0 10]の範囲にある値を使用すると良く,
小さい値は強いハイライトを生成し, 大きい値は単に検知できるレベルの
ハイライトを生成します.
デフォルト値は "2"
です.
このフィールドは面の環境色を定義します.
この色は,各要素が[0, 1]の範囲である
3要素ベクトル"[red, green, blue]"
により定義されます.
デフォルト値は "[1 1 1]"
です.
このフィールドは面の拡散色を定義します.
この色は,各要素が[0, 1]の範囲である
3要素ベクトル"[red, green, blue]"
により定義されます.
このフィールドは use_color_material が無効の場合のみ使用されます.
デフォルト値は "[1 1 1]"
です.
このフィールドは面の反射色を定義します.
この色は,各要素が[0, 1]の範囲である
3要素ベクトル"[red, green, blue]"
により定義されます.
デフォルト値は "[1 1 1]"
です.
このフィールドは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フィールドが指定されていないため,デフォルトの青色に基づく) | ![]() | ![]() |