Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.3.0 - 日本語

Change language to:
English - Français - Português

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Scilab manual >> Graphics Library > 3d_plot > surface_properties

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_mode0に設定された場合, 曲面のメッシュが描画されます: 表面には色がありません. 最後に,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.colorcolorベクトルを 有します: 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.colorcolors ベクトルを有する場合 : この場合, 補間シェーディングモードを完成するにはデータが少なすぎます. この処理を行うには,大きさ (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.colorcolors ベクトルを有する場合 : 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_flag2,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 >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Jan 26 16:25:11 CET 2011