Примеры того, как нарисовать сложные фигуры в Scilab
Рассмотрим, как в Scilab строить эллипсы, прямоугольники и произвольные геометрические фигуры.
Прямая линия
Начнём с простого примера построения линии.
Прежде всего, сделаем заготовку графической области, на которой будем рисовать
clc; clf();
plot2d(0,0,-1,"031"," ",[-2,-2,2,2]);
axes = gca();
axes.grid = [2,2];Неизменная часть для всех рисуночков

Квадратная область с сеткой в Scilab
Для того, чтобы нарисовать прямую нам понадобятся две точки и функция
Итак, для линии, идущей из точки (-1.5, 0) в (1, 1.5) зададим два массива
xpts = [-1.5 1];
ypts = [0 1.5];Задание вектор-строк координат
А далее просто построим наш график по заданным точкам (которых всего две):
plot(xpts, ypts); Построение прямой по 2м точкам
line = axes.children.children(1);
//изменим толщину линий на графике
line.thickness = 2;
//изменим цвет линии на графике
line.foreground = 3;Немного подправим цвет и жирность прямой
line.mark_mode = 'on';
line.mark_size = 6;Добавим соединительные пипульки и увеличим их размер
В итоге получим зелёную полужирную прямую с кругляшами на концах:

Прямая линия в Scilab
Ломаная линия
Эту линию, конечно, можно продолжить, просто добавив новые элементы в массивы
xpts = [-1.5 1 1.5 .5 -1];
ypts = [0 1.5 1 -1.5 -1];Рисуем произвольную ломаную в Scilab

Ломаная линия в Scilab
Произвольный многоугольник
Из линии можно сделать многоуголиник, если в массивы координат последними элементами добавить их начальные значения:
xpts = [-1.5 1 1.5 .5 -1 -1.5];
ypts = [0 1.5 1 -1.5 -1 0];Фигура по точкам в Scilab

Неправильный многоугольник в Scilab
Этот многоугольник можно закрасить, используя способ 1 polyline_style:
line.polyline_style = 5;Закрашиваем многоугольник в Scilab

Закрашенный многоугольник в Scilab
Если же требуется более тонкая настрока цветов, то нуно прибегнуть к способу 2 и вместо polyline_style испольщовать fill_mode и closed. При этом, замыкать ломаную вручную необязательно:
xpts = [-1.5 1 1.5 .5 -1];
ypts = [0 1.5 1 -1.5 -1];
line.fill_mode = "on";
line.closed = "on";
//изменим цвет заливки фона
line.background = 6; Закрашиваем и замыкаем многоугольник в Scilab

Закрашенный многоугольник в Scilab
Правильный n-угольник
Теперь, когда мы натренеровались строить и настравивать отображение фигур в Scilab, построим правильный многоугольник, вписанный в единичную окружность.
xpts = [];
ypts = [];Зададим массивы для ординат и абсцисс
angles = 5;
degreeStep = 2*%pi/angles;Зададим количество углов и сразу посчитаем градус одного угла
Осталось в цикле вычислисть все
Для этого, мы будем
Следовательно, интересующие нас координаты - это
А чтобы начинать движение из точки (0, 1), нужно прибавить
for j = 1:angles
xpts(j) = cos(%pi/2 + degreeStep * j);
ypts(j) = sin(%pi/2 + degreeStep * j);
endЦикл для вычисления координат вершин правильного многоугольника
Нарисуем правильный пятиугольник в Scilab, замкнув ломаную и изменим толщину линий и их цвет на графике
plot(xpts, ypts);
line = axes.children.children(1);
line.thickness = 3;
line.foreground = 4;
line.closed = "on";
Правильный многоугольник в Scilab
Эту задачу можно решить и другим способом - с помощью
angles = 8;
degreeStep = 2*%pi/angles;
xpts = sin(degreeStep*(0:angles-1));
ypts= cos(degreeStep*(0:angles-1));
xpoly(xpts,ypts);
line = gce();
line.thickness = 4;
line.foreground = 6;
line.closed = "on";Рисуем правильный многоугольник в Scilab

Правильный многоугольник с помощью xpoly()
Для того, чтобы нарисовать закрашенный многоугольник, нужно использовать функцию
angles = 10;
degreeStep = 2*%pi/angles;
xpts = sin(degreeStep*(0:angles-1));
ypts= cos(degreeStep*(0:angles-1));
xfpoly(xpts,ypts);
line = gce();
line.thickness = 4;
line.foreground = 6;
line.background = 3;
line.closed = "on";Рисуем правильный многоугольник в Scilab

Правильный многоугольник с помощью xfpoly()
Эллипс
Для построения эллипса нужно задать 6 значений:

Значения матрицы эллипса
Координаты (xLeftTop, yLeftTop) верхнего левого угла прямоугольника, в который будет вписан эллипс;
Ширину elWidth и Высоту elWidth прямоугольника, в который будет вписан эллипс;
Угол angleStart, откуда будет стартовать дуга эллипса и Угол angleEnd, где дуга остановится.
Для того, чтобы построить изображённый выше эллипс, зададим следующие значения:
xLeftTop = -1;
yLeftTop = 1;
elWidth = 2.5;
elHeight = 1.5;
angleStart = 0;
angleEnd = 360*64;
arcs = [xLeftTop; yLeftTop; elWidth; elHeight; angleStart; angleEnd]; Задаём параметры эллипса
Сам эллипс по заданным параметрам строится с помощью функции
xarcs(arcs)
ellips = gce().children;
//изменим цвет линии
ellips.foreground = 6;
//и сделаем её пожирнее
ellips.thickness = 3;Задаём параметры эллипса
Сектор
Из эллипса можно строить произвольные сектора, располагая их в желаемом месте на координатной сетке.

Произвольные сектора
Построим два сектора на основе эллипса с заданными параметрами:
//циановый сектор
xLeftTop = -1.5;
yLeftTop = 1.5;
elWidth = 1;
elHeight = 3;
angleStart = 0;
angleEnd = 90*64;
arcs = [xLeftTop; yLeftTop; elWidth; elHeight; angleStart; angleEnd];
xarcs(arcs)
ellips = gce().children;
ellips.fill_mode = "on"
ellips.foreground = 4;
ellips.background = 4;
//маджентовый сектор
xLeftTop = 0;
yLeftTop = 0;
elWidth = 2;
elHeight = 1;
angleStart = 30*64;
angleEnd = 210*64;
arcs = [xLeftTop; yLeftTop; elWidth; elHeight; angleStart; angleEnd];
xarcs(arcs)
ellips = gce().children;
ellips.fill_mode = "on"
ellips.foreground = 6;
ellips.background = 6;Рисуем сектора в Scilab с помощью функции xarcs()
Звезда Сименса
В заключении построим Звезду Сименса изображение, применяемое для проверки остроты зрения (wiki).

Звезда Сименса с 50 лучами
//число секторов
n = 50;
for j = 1:n
xfarc(-1.5,1.5,3,3,2*j*(180/n)*64,64*(180/n));
endРисуем закрашенные сектора в цикле в Scilab




