# Графические объекты

описание структур данных графических объектов

## Описание

В Scilab'е графическое окно и рисование его содержимого представлены иерархическими объектами. Верхний уровень иерархии - это `Figure` ("Окно"). Каждое окно `Figure` определяет по меньшей мере одного потомка типа `Axes` ("оси"). Каждый объект осей `Axes` содержит набор листовых объектов, которые являются основными графическими объектами такими, как `Polylines` ("ломанные линии"), `Rectangles` ("прямоугольники"), `Arcs` ("дуги"), `Segs` ("сегменты"),... Он может также содержать составной тип `Compound`, который является рекурсивным набором объектов. Главный интерес графического режима заключается в том, чтобы сделать обмен свойствами проще. Этот графический режим обеспечивает набор графических функций высокого уровня (см. set, get), используемых для управления свойствами объектов, такими, как данные, координаты и масштабирование, цвет и вид без необходимости повторять команды инициализации графики.

Графические объекты связаны с переменными Scilab'а типа `handle` ("дескриптор"). Дескриптор - это уникальный идентификатор, который связан с каждым образцом созданного графического объекта. Используя этот дескриптор, можно добраться до свойств объекта через функции `set` и `get`. Дескрипторы также используются для манипулирования графическими объектами, чтобы двигать, копировать или удалять их.

Figure:

  Объект графического окна `Figure` - это верхний уровень иерархии графических объектов. Этот объект определяет параметры собственно графического окна, а также значения по умолчанию параметров при создании потомков. Потомки графического окна являются объектами осей `Axes`.

  Дескриптор текущего графического окна (графического окна, используемого для построения графиков) может быть получен с помощью `get("current_figure")` и он может быть установлен с помощью `set("current_figure",h)`, где `h` - это или дескриптор графического окна, или `figure_id`. В последнем случае, если графическое окно ещё не существует, то оно будет создано.

  См. подробности в свойствах графического окна.

Axes:

  Объект осей The `Axes` - это второй уровень иерархии графических объектов. Этот объект определяет параметры для изменения координат и рисования осей, а также значений по умолчанию параметров для создания его потомков. См. подробности в свойствах осей. Дескриптор текущих осей `Axes` может быть получен с помощью `get("current_axes")`.

Compound:

  Составной объект `Compound` - это просто вектор потомков и с единственным свойством (свойство видимости). Он используется для склеивания набора объектов вместе.

  См. функции glue, unglue и свойства составного объекта Compound .

Axis:

  Объект оси `Axis` - это лист иерархии графических объектов. Этот объект определяет параметры для масштабирования и вида осей.

  См. подробности в свойствах оси.

Polyline:

  Объект ломаной линии `Polyline` - это лист иерархии графических объектов. Он определяет двумерные и трёхмерные ломаные линии и свойства рисования продолжения ломаных линий.

  См. подробности в свойствах ломаных линий.

Arc:

  Объект дуги `Arc` - это лист иерархии графических объектов. Этот объект определяет параметры эллипсов и части эллипсов.

  См. подробности в свойствах дуги.

Rectangle:

  Объект прямоугольника `Rectangle` - это лист иерархии графических объектов. Этот объект определяет параметры прямоугольников и залитых прямоугольников.

  См. подробности в свойствах прямоугольника.

Surface:

  Объект поверхности `Surface` - это лист иерархии графических объектов. У него есть подтипы `Fac3d` или `Plot3d`. Этот объект определяет параметры для графиков трёхмерной поверхности.

  См. подробности в свойствах поверхности.

Fec:

  Объект `Fec` - это лист иерархии графических объектов. Он представляет двумерные графики конечных элементов.

  См. подробности в свойствах fec.

Grayplot:

  Объект палитры серого `Grayplot` - это лист иерархии графических объектов. Он представляет двумерные графики поверхности с помощью цветов и изображений.

  См. подробности в палитре серого.

Matplot:

  Объект `Matplot` - это лист иерархии графических объектов. Он представляет двумерные графики с помощью матриц с целочисленными элементами.

  См. подробности в свойствах Matplot'а.

Segs:

  Объект сегментов `Segs` - это лист иерархии графических объектов. Этот объект определяет параметры для набора раскрашенных сегментов или раскрашенных стрелок.

  См. подробности в свойствах сегментов.

Champ:

  Объект фона `Champ` - это лист иерархии графических объектов. Этот объект определяет параметры двумерного векторного поля.

  См. подробности в свойствах фона.

Text:

  Объект текста `Text` - это лист иерархии графических объектов. Этот объект определяет параметры для рисования строк.

  См. подробности в свойствах текста.

Label:

  Объект подписи `Label` - это потомок графического объекта осей `Axes`. Этот объект определяет параметры подписей к осям x, y и z, а также названия, нарисованного в графическом окне.

  См. подробности в свойствах объекта подписи Label.

Legend:

  Объект легенды `Legend` - это лист иерархии графических объектов. Этот объект определяет параметры легенды, рисуемой ниже графиков `plot2dx`. Этот объект требует дальнейшей разработки.

  См. подробности в свойствах объекта легенды Legend.

## Примеры

    // Проиграйте этот пример строчку за строчкой
    scf() //создать графическое окно в объектном режиме
    //получить дескриптор объекта Figure и распечатать его свойства
    f=get("current_figure")
    a=f.children // дескриптор потомка - осей Axes
    x=(1:10)';  plot2d(x,[x.^2 x.^1.5])
    e=a.children //Составной объект Compound двух ломаных линий
    p1=e.children(1) // свойства последней нарисованной ломаной линии
    p1.foreground=5; // изменение цвета ломаной линии
    e.children.thickness=5; // изменение толщины двух ломаных линий
    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); //скопировать объект ломаной линии первого графика в новый объект осей Axes
    a1.data_bounds=[1 0;10 100]; //изменить пределы осей Axes
    set("current_figure",10) //создать новое графическое окно с figure_id=10
    plot3d() // график посылается в графическое окно 10
    set("current_figure",f) // создать предыдущее графическое окно текущим
    plot2d(x,x^3)  // график посылается в первоначальное графическое окно

## Смотрите также

- set
- get
- move
- delete
- редактор объектов
- plot
- surf