# graphics_entities

グラフィックスエンティティデータ構造体の説明

## 説明

Scilabでは, グラフィックウインドウおよびそのウインドウに描画されたもの は階層的なエンティティにより表されます. 最上位の階層は Figure (図)です. 各 Figure は1個以上のAxes型の子を定義します. 各 Axes エンティティは Polylines, Rectangles, Arcs, Segs,...のような 一連の葉(leaf)エンティティを有します. エンティティの再帰的な集合のCompound型を有することも可能です. グラフィックモードの主要な関心事は,プロパティの変更をより簡単に することです.このグラフィックモードは, データ,座標やスケーリング,色や外観のようなオブジェクトのプロパティを 最初のグラフィックコマンドを再度実行することなく制御するために 複数の高レベルグラフ作成ルーチン を提供します (set, get参照)

グラフィックエンティティは`handle`型のScilab変数に 対応します. このハンドルは, 作成されたグラフィックエンティティの各インスタンスを示すユニークなIDです. このハンドルを用いて, "set" および "get"ルーチンによりエンティティの プロパティにアクセスすることができるようになります. ハンドルはグラフィックオブジェクトを操作したり,移動したり, コピーまたは削除する際にも使用されます.

Figure:

  figureエンティティは,グラフィックエンティティ階層の最上位です. このエンティティは図(figure)本体のパラメータを定義し, 同時に子を作成する際のデフォルト値も定義します. figureの子はAxesエンティティです.

  カレントのfigure(描画指示が送信されるfigure)のハンドル は,`get("current_figure")`により取得でき, `set("current_figure",h)`により設定できます. ただし, `h` は figureのハンドルまたは `figure_id` のどちらかです. 後者について,その図がまだ作成されていない場合には,作成されます.

  詳細はfigure_properties を参照ください.

Axes:

  Axesエンティティはグラフィックエンティティ階層の第二レベルです. このエンティティは座標系の変化に関するパラメータおよび 軸に描画されるものを定義し, 同時に,作成される子のデフォルトのパラメータを定義します. 詳細は,axes_properties for details. The handle on the current Axes may be got using `get("current_axes")`を参照ください.

Compound:

  Compound エンティティは単なる子のベクトルで, プロパティを1つだけ(visibilityプロパティ)有しています. これは,一連のエンティティを集約するためのグルーとして 使用されます.

  glue, unglueおよび Compound_properties 関数を 参照ください.

Axis:

  Axisエンティティはグラフィックエンティティ階層の葉です. このエンティティは軸の目盛および外観に関するパラメータを定義します.

  詳細はaxis_properties を参照ください.

Polyline:

  ポリラインエンティティはグラフィックエンティティ階層の葉です. このエンティティは,2次元および3次元ポリラインおよび ポリラインの拡張描画プロパティを定義します.

  詳細は polyline_properties を 参照ください.

Arc:

  Arcエンティティはグラフィックエンティティ階層の葉です. このエンティティは楕円および楕円の一部を定義します.

  詳細はarc_properties を参照ください.

Rectangle:

  Rectangleエンティティはグラフィックエンティティ階層の葉です. このエンティティは矩形および塗りつぶされた矩形のパラメータを 定義します.

  詳細はrectangle_properties を参照ください.

Surface:

  Surfaceエンティティはグラフィックエンティティ階層の葉です. このエンティティはサブタイプ `Fac3d` または `Plot3d`を有します. このエンティティは 3次元プロットのパラメータを定義します.

  詳細はsurface_properties を参照ください.

Fec:

  Fec エンティティはグラフィックエンティティ階層の葉です. このエンティティは2次元有限要素プロットを表します.

  詳細は fec_properties を参照ください.

Grayplot:

  Grayplot eエンティティはグラフィックエンティティ階層の葉です. このエンティティは色および画像による曲面の二次元プロット表します.

  詳細は grayplot_properties を参照ください.

Matplot:

  Matplot エンティティはグラフィックエンティティ階層の葉です. このエンティティは整数行列による二次元プロット表します.

  詳細は Matplot_properties を参照ください.

Segs:

  Segs エンティティはグラフィックエンティティ階層の葉です. このエンティティは,一連の色付の線分または色付の矢印のパラメータを定義します.

  詳細は segs_properties を参照ください.

Champ:

  Champ エンティティはグラフィックエンティティ階層の葉です. このエンティティは2次元ベクトルフィールドに関するパラメータを定義します.

  詳細は champ_properties を参照ください.

Text:

  Text エンティティはグラフィックエンティティ階層の葉です. このエンティティは文字列の描画に関するパラメータを定義します.

  詳細は text_properties を参照ください.

Label:

  Labelエンティティは`Axes`グラフィックエンティティの 子です.このエンティティはグラフィックウィンドウに描画される x, y, z 軸のラベルとタイトルを定義します.

  詳細は label_properties を参照ください.

Legend:

  Legend エンティティはグラフィックエンティティ階層の葉です. このエンティティは,`plot2dx`グラフに描画される 凡例に関するパラメータを定義します. このエンティティはまだ開発中です.

  詳細は legend_properties を参照ください.

## 例

    //この例を行単位で実行してください

    scf() //エンティティモードで図を作成

    // Figureエンティティのハンドルを取得し,そのプロパティを表示
    f=get("current_figure")
    a=f.children //Axisの子のハンドル
    x=(1:10)';  plot2d(x,[x.^2 x.^1.5])
    e=a.children // 2つのポリラインからなるCompoun

    p1=e.children(1) //直近に描画されたポリラインのプロパティ
    p1.foreground=5;  // ポリラインの色を変更
    e.children.thickness=5; // 2つのポリラインの幅を変更

    delete(e.children(2))

    move(e.children,[0,30]) //ポリラインを変換

    a.axes_bounds=[0 0 0.5 0.5];

    subplot(222) //新たにAxesエンティティを作成
    plot(1:10);
    a1=f.children(1); //ハンドルを取得
    copy(e.children,a1); //最初のプロットのポリラインを新しい軸にコピー
    a1.data_bounds=[1 0;10 100]; //軸の範囲を変更

    set("current_figure",10) //figure_id=10の新規図を作成
    plot3d() //描画データは figure 10に送信される
    set("current_figure",f) //前の図をカレントの図にする
    plot2d(x,x^3)  //描画データは最初の図に送信される

## 参照

- set
- get
- move
- draw
- delete
- object_editor
- plot
- surf