Построение линий в пространстве

Отобразить линию, проходящую через Построение линий в пространстве - student2.ru точек с координатами Построение линий в пространстве - student2.ru можно с помощью функции plot3(x,y,z), где x,y и z являются векторами одинаковой длины. Например, построим винтовую линию

Построение линий в пространстве - student2.ru .

>> t = [0:pi/18:6*pi];

>> x = cos(t);

>> y = sin(t);

>> z = t;

>> plot3(x, y, z,'r--')

>> grid

Дополнительный строковый аргумент задает цвет и стиль линии.

Построение линий в пространстве - student2.ru

Функция plot3(X,Y,Z), где X, Y и Z матрицы одинакового размера Построение линий в пространстве - student2.ru , отображает линии, проходящие через Построение линий в пространстве - student2.ru точек с координатами Построение линий в пространстве - student2.ru , а число линий равно Построение линий в пространстве - student2.ru .

Например, построим тетраэдр, вершины которого заданы координатами:

Построение линий в пространстве - student2.ru .

>> X = [0 1 0 0 0 1; 1 0 0 0 0 0];

>> Y = [0 0 1 0 1 0; 0 1 0 0 0 0];

>> Z = [0 0 0 0 0 0; 0 0 0 1 1 1];

>> plot3(X, Y, Z,'r')

>> grid

Построение линий в пространстве - student2.ru

4. Построение многогранников.

В MatLabимеется два основных способа построения фигур с помощью функции patch.

Первый способ.

Задают координаты вершин каждой грани многогранника, соединяя которые MatLabстроит фигуру. Формат вызова функции выглядит следующим образом patch(X, Y, C)или patch(X, Y, Z, C), где X, Y, Z – векторы значений координат вершин, а С задает цвет в формате ColorSpec. Аргументы X, Y, Z могут быть матрицами, тогда для каждого столбца строиться свой многогранник.

Пример 1.

Построение желтого треугольника:

>> X = [0 1 0];

>> Y = [0 0 1];

>> patch(X, Y, 'y')

Построение линий в пространстве - student2.ru

Пример 2.

Построение правильного многоугольника:

>> t = 0:pi/4:2*pi;

>> X = sin(t);

>> Y = cos(t);

>> patch(X, Y, [1 0 0])

>> axis equal

Построение линий в пространстве - student2.ru

В результате мы получаем восемь пар координат точек, равномерно расположенных на окружности единичного радиуса. Функция patchсоединяет их и закрашивает красным цветом.

Строка axis equal делает одинаковый масштаб по обеим осям.

Задавая достаточно большое количество точек, можно получать плавные кривые. Например, построим круг с плавной заливкой

>> t = 0:0.01:2*pi;

>> X = sin(t);

>> Y = cos(t);

>> patch(X, Y, 1:length(t))

>> axis equal

Построение линий в пространстве - student2.ru

Функция patchможет использоваться и для закрашивания областей. Например,

X = 0:0.01:1;

X1 = 1:-0.01:0;

Y1 = X1.^2;

Y2 = sqrt(X);

patch([X X1], [Y2 Y1], 'y')

axis square

grid

Построение линий в пространстве - student2.ru

Для построения таким же способом многогранника, X, Y, Z придется задавать в виде матриц, в которых для каждого столбца будет построен свой многоугольник. Например, нарисуем куб. Т.к. куб имеет 6 граней, то матрицы будут содержать 6 столбцов. Каждая грань состоит из четырех вершин, поэтому в каждой матрице будет 4 строки.

Построение линий в пространстве - student2.ru


X – координаты Y – координаты Z – координаты

Построение линий в пространстве - student2.ru

Выполняем команды

>> X = [0 1 0 0 0 0; 1 1 1 0 1 1; 1 1 1 0 1 1; 0 1 0 0 0 0];

>> Y = [0 0 0 0 0 1; 0 1 0 0 0 1; 0 1 1 1 1 1; 0 0 1 1 1 1];

>> Z = [0 0 1 0 0 0; 0 0 1 1 0 0; 1 1 1 1 0 1; 1 1 1 0 0 1];

>> patch(X, Y, Z, [0.5 0.5 0.5])

>> axis equal

>> view(3)

Построение линий в пространстве - student2.ru

Последняя команда view(3) устанавливает проекцию, используемую по умолчанию для визуализации трехмерных объектов. Если этой команды не будет, то мы увидим только одну грань куба.

Второй способ.

Задают все вершины многогранника и указывают, какие из них следует объединить в грани с заданными номерами.

Например, построим куб из предыдущего примера. Матрица вершин V имеет три столбца и восемь строк:

>> V = [0 0 0; 1 0 0; 1 0 1; 0 0 1; 0 1 0; 1 1 0; 1 1 1; 0 1 1];

Теперь надо построить матрицу F, в каждой строке которой будут перечислены вершины, образующие соответствующую грань. Вершины задаются как номер строки матрицы V, содержащей координаты этой вершины. Т.к. граней всего 6, то у матрицы F будет шесть строк

>> F = [1 2 3 4; 1 2 6 5; 2 3 7 6; 1 4 8 5; 3 4 8 7; 5 6 7 8];

>> patch('Vertices',V, 'Faces',F,'FaceColor', [0.5 0.5 0.5])

>> view(3)

>> axis equal

Построение линий в пространстве - student2.ru

Способы закраски объектов.

Для объектов типа patch могут используються следующие свойства:

Свойства Значение
CData Определяет свой цвет для каждой грани или вершины на основании данных о координатах вершин
CDataMapping Определяет, каким образом масштабируются цветовые данные
FaceVertexCData Определяет свой цвет для каждой грани или вершины на основании данных о вершинах и гранях
EdgeColor Задает общий цвет для всех ребер или способ их отображения: видимые, невидимые, с плавными переходами цвета.
FaceColor Задает общий цвет для всех граней или способ их отображения: видимые, невидимые, с плавными переходами цвета.
MarkerEdgeColor Определяет цвет маркеров или цвет контура у закрашенных маркеров.
MarkerFaceColor Определяет цвет закраски маркеров.

Рассмотрим некоторые свойства на примерах.

Монотонное закрашивание куба.

>> X = [0 1 0 0 0 0; 1 1 1 0 1 1; 1 1 1 0 1 1; 0 1 0 0 0 0];

>> Y = [0 0 0 0 0 1; 0 1 0 0 0 1; 0 1 1 1 1 1; 0 0 1 1 1 1];

>> Z = [0 0 1 0 0 0; 0 0 1 1 0 0; 1 1 1 1 0 1; 1 1 1 0 0 1];

>> C = [1 2 3 4 5 6];

>> h = patch(X, Y, Z, 'y');

>> set(h,'CData',C,'FaceColor','flat')

>> colorbar

>> axis equal

>> view(3)

Построение линий в пространстве - student2.ru

Наши рекомендации