1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
6 * This file must be used under the terms of the CeCILL.
7 * This source file is licensed as described in the file COPYING, which
8 * you should have received as part of this distribution. The terms
9 * are also available at
10 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
13 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ru" xml:id="graphics_entities">
15 <refname>Графические объекты</refname>
17 описание структур данных графических объектов
21 <title>Описание</title>
23 В Scilab'е графическое окно и рисование его содержимого представлены
24 иерархическими объектами. Верхний уровень иерархии - это
25 <literal>Figure</literal> ("Окно"). Каждое окно
26 <literal>Figure</literal> определяет по меньшей мере одного потомка
27 типа <literal>Axes</literal> ("оси"). Каждый объект осей
28 <literal>Axes</literal> содержит набор листовых объектов, которые
29 являются основными графическими объектами такими, как
30 <literal>Polylines</literal> ("ломанные линии"),
31 <literal>Rectangles</literal> ("прямоугольники"),
32 <literal>Arcs</literal> ("дуги"), <literal>Segs</literal> ("сегменты"),...
33 Он может также содержать составной тип <literal>Compound</literal>,
34 который является рекурсивным набором объектов. Главный интерес
35 графического режима заключается в том, чтобы сделать обмен
36 свойствами проще. Этот графический режим обеспечивает набор
37 графических функций высокого уровня (см. <link
38 linkend="set">set</link>, <link linkend="get">get</link>),
39 используемых для управления свойствами объектов, такими, как данные,
40 координаты и масштабирование, цвет и вид без необходимости повторять
41 команды инициализации графики.
44 Графические объекты связаны с переменными Scilab'а типа
45 <literal>handle</literal> ("дескриптор"). Дескриптор - это
46 уникальный идентификатор, который связан с каждым образцом
47 созданного графического объекта. Используя этот дескриптор, можно
48 добраться до свойств объекта через функции <function>set</function>
49 и <function>get</function>. Дескрипторы также используются для
50 манипулирования графическими объектами, чтобы двигать, копировать
59 Объект графического окна <literal>Figure</literal> - это
60 верхний уровень иерархии графических объектов. Этот
61 объект определяет параметры собственно графического
62 окна, а также значения по умолчанию параметров при
63 создании потомков. Потомки графического окна являются
64 объектами осей <literal>Axes</literal>.
67 Дескриптор текущего графического окна (графического
68 окна, используемого для построения графиков) может быть
69 получен с помощью <code>get("current_figure")</code> и
70 он может быть установлен с помощью
71 <code>set("current_figure",h)</code>, где
72 <literal>h</literal> - это или дескриптор
73 графического окна, или <literal>figure_id</literal>. В
74 последнем случае, если графическое окно ещё не
75 существует, то оно будет создано.
78 См. подробности в <link
79 linkend="figure_properties">свойствах графического окна</link>.
87 Объект осей The <literal>Axes</literal> - это второй
88 уровень иерархии графических объектов. Этот объект
89 определяет параметры для изменения координат и рисования
90 осей, а также значений по умолчанию параметров для
91 создания его потомков. См. подробности в <link
92 linkend="axes_properties">свойствах осей</link>.
93 Дескриптор текущих осей <literal>Axes</literal> может
94 быть получен с помощью <code>get("current_axes")</code>.
99 <term>Compound: </term>
102 Составной объект <literal>Compound</literal> - это
103 просто вектор потомков и с единственным свойством
104 (свойство видимости). Он используется для склеивания
105 набора объектов вместе.
108 См. функции <link linkend="glue">glue</link>, <link
109 linkend="unglue">unglue</link> и <link
110 linkend="Compound_properties">свойства составного
121 Объект оси <literal>Axis</literal> - это лист иерархии
122 графических объектов. Этот объект определяет параметры
123 для масштабирования и вида осей.
126 См. подробности в <link
127 linkend="axis_properties">свойствах оси</link>.
132 <term>Polyline: </term>
135 Объект ломаной линии <literal>Polyline</literal> - это
136 лист иерархии графических объектов. Он определяет
137 двумерные и трёхмерные ломаные линии и свойства
138 рисования продолжения ломаных линий.
141 См. подробности в <link
142 linkend="polyline_properties">свойствах ломаных линий</link>.
150 Объект дуги <literal>Arc</literal> - это
151 лист иерархии графических объектов. Этот объект
152 определяет параметры эллипсов и части эллипсов.
155 См. подробности в <link
156 linkend="arc_properties">свойствах дуги</link>.
161 <term>Rectangle: </term>
164 Объект прямоугольника <literal>Rectangle</literal> - это
165 лист иерархии графических объектов. Этот объект
166 определяет параметры прямоугольников и залитых
170 См. подробности в <link
171 linkend="rectangle_properties">свойствах прямоугольника</link>.
176 <term>Surface: </term>
179 Объект поверхности <literal>Surface</literal> - это
180 лист иерархии графических объектов. У него есть подтипы
181 <literal>Fac3d</literal> или <literal>Plot3d</literal>.
182 Этот объект определяет параметры для графиков трёхмерной
186 См. подробности в <link
187 linkend="surface_properties">свойствах поверхности</link>.
195 Объект <literal>Fec</literal> - это
196 лист иерархии графических объектов. Он представляет
197 двумерные графики конечных элементов.
200 См. подробности в <link
201 linkend="fec_properties">свойствах fec</link>.
206 <term>Grayplot: </term>
209 Объект палитры серого <literal>Grayplot</literal> - это
210 лист иерархии графических объектов. Он представляет
211 двумерные графики поверхности с помощью цветов и
215 См. подробности в <link
216 linkend="grayplot_properties">палитре серого</link>.
221 <term>Matplot: </term>
224 Объект <literal>Matplot</literal> - это
225 лист иерархии графических объектов. Он представляет
226 двумерные графики с помощью матриц с целочисленными
230 См. подробности в <link
231 linkend="Matplot_properties">свойствах Matplot'а</link>.
239 Объект сегментов <literal>Segs</literal> - это
240 лист иерархии графических объектов. Этот объект
241 определяет параметры для набора раскрашенных сегментов
242 или раскрашенных стрелок.
245 См. подробности в <link
246 linkend="segs_properties">свойствах сегментов</link>.
254 Объект фона <literal>Champ</literal> - это
255 лист иерархии графических объектов. Этот объект
256 определяет параметры двумерного векторного поля.
259 См. подробности в <link
260 linkend="champ_properties">свойствах фона</link>.
268 Объект текста <literal>Text</literal> - это
269 лист иерархии графических объектов. Этот объект
270 определяет параметры для рисования строк.
273 См. подробности в <link
274 linkend="text_properties">свойствах текста</link>.
282 Объект подписи <literal>Label</literal> - это
283 потомок графического объекта осей
284 <literal>Axes</literal>. Этот объект определяет
285 параметры подписей к осям x, y и z, а также названия,
286 нарисованного в графическом окне.
289 См. подробности в <link
290 linkend="label_properties">свойствах объекта подписи Label</link>.
295 <term>Legend: </term>
298 Объект легенды <literal>Legend</literal> - это
299 лист иерархии графических объектов. Этот объект
300 определяет параметры легенды, рисуемой ниже графиков
301 <literal>plot2dx</literal>. Этот объект требует дальнейшей разработки.
304 См. подробности в <link linkend="legend_properties">свойствах объекта легенды Legend</link>.
311 <title>Примеры</title>
312 <programlisting role="example"><![CDATA[
313 // Проиграйте этот пример строчку за строчкой
314 scf() //создать графическое окно в объектном режиме
315 //получить дескриптор объекта Figure и распечатать его свойства
316 f=get("current_figure")
317 a=f.children // дескриптор потомка - осей Axes
318 x=(1:10)'; plot2d(x,[x.^2 x.^1.5])
319 e=a.children //Составной объект Compound двух ломаных линий
320 p1=e.children(1) // свойства последней нарисованной ломаной линии
321 p1.foreground=5; // изменение цвета ломаной линии
322 e.children.thickness=5; // изменение толщины двух ломаных линий
323 delete(e.children(2))
324 move(e.children,[0,30]) //перевод ломаной линии
325 a.axes_bounds=[0 0 0.5 0.5];
326 subplot(222) //создать новый объект осей Axes
328 a1=f.children(1); //получить его дескриптор
329 copy(e.children,a1); //скопировать объект ломаной линии первого графика в новый объект осей Axes
330 a1.data_bounds=[1 0;10 100]; //изменить пределы осей Axes
331 set("current_figure",10) //создать новое графическое окно с figure_id=10
332 plot3d() // график посылается в графическое окно 10
333 set("current_figure",f) // создать предыдущее графическое окно текущим
334 plot2d(x,x^3) // график посылается в первоначальное графическое окно
337 <refsection role="see also">
338 <title>Смотрите также</title>
339 <simplelist type="inline">
341 <link linkend="set">set</link>
344 <link linkend="get">get</link>
347 <link linkend="move">move</link>
350 <link linkend="draw">draw</link>
353 <link linkend="delete">delete</link>
356 <link linkend="object_editor">редактор объектов</link>
359 <link linkend="plot">plot</link>
362 <link linkend="surf">surf</link>