Статья опубликована в рамках: Научного журнала «Студенческий» № 23(67)
Рубрика журнала: Технические науки
Секция: Моделирование
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4
ПОЛУЧЕНИЕ ТРАЕКТОРИИ ДВИЖЕНИЯ ТЕЛА ПРИ МОДЕЛИРОВАНИИ ПОВОРОТА В СРЕДЕ MATLAB
Для получения траектории поворачиваемого тела сначала необходимо разобраться как происходит поворот относительной какой-либо из оси вращения. Вращение тела вокруг любой из локальных осей x′, y′ или z′ выполняется с помощью следующей процедуры:
- переместить тело так, чтобы локальная ось совпала с координатной;
- повернуть вокруг указанной оси;
- переместить преобразованное тело в исходное положение.
Математически это можно записать так:
[X*] = [X][Tr][Rx][Tr]-1,
где:
- [X*] - преобразованное тело,
- [X] - исходное тело,
- [Tr] – матрица перемещения,
- [Rx] - соответствующая матрица поворота,
- [Tr]-1 - матрица, обратная к матрице перемещения.
Рисунок 1. Отрисовка цилиндрического тела в среде Matlab.
На рисунке 1 отображено начальное состояние тела, также на рисунке выделены по 4 точки на каждой грани, которые отвечают за математические вычисления при повороте.
Рисунок 2. Поворот вокруг оси, параллельной одной из координатных осей
Рисунок 3. Поворот вокруг оси, параллельной одной из координатных осей
Рассмотрим точки, лежащие на цилиндре, изображенные на рисунке 1, заданные матрицей координат X относительно глобальной системы координат xyz.
X =
Повернем точки, лежащие на цилиндре на q = +45° относительно локальной оси X*, проходящей через центр координатной оси на расстоянии -22.85 по оси Z от пересечения осей XY.
Координаты данной оси начинаются в точке [xc yc zc 1] = [0 0 -17.7 1], а продолжаются параллельно оси X. Вращение осуществляется следующим образом: [X*] = [X][Tr][Rx][Tr]-1
Где:
TrX = = ,
Rx = =
и
TrX-1 = = .
Первая матрица [TrX] сдвигает точки параллельно плоскости
x = 0 до тех пор, пока ось y′ не совпадет с осью y. Вторая матрица [Rx] выполняет требуемое вращение вокруг оси y, третья матрица [Tr]-1 переносит ось y′, а следовательно, и повернутые точки, обратно в исходное положение.
Объединив эти три матрицы, получим
[T] = [Tr][Rx][Tr]-1 =
= .
После подстановки числовых значений преобразованные координаты примут вид:
X* =
Результат изображен на рисунках 2 и 3.
В зависимости от количества точек, которые будут описывать начальное положение тела будет зависеть точность и наглядность полученной траектории поворота, для этого получаем следующий код, который выполняет поворот на определенный угол, с определенным количеством шагов:
avg = degree/part;
for rot = 0:part
Rx = [1 0 0 0
0 cosd(avg*rot) sind(avg*rot) 0
0 -sind(avg*rot) cosd(avg*rot) 0
0 0 0 1];
X = tX*TrX*Rx*TrX1;
rotateMatrix = [rotateMatrix; X];
end
plot3(rotateMatrix(:,1),rotateMatrix(:,2),rotateMatrix(:,3),'red.','MarkerSize', 12.5)
Где соответственно degree – максимальный угол поворота, part – количество шагов для достижения максимального угла, avg – угол поворота за один шаг, rot – непосредственно счетчик для поворота на определенный угол(шаг поворота), tX – матрица поворачиваемого объекта, TrX, TrX1 – матрицы сопоставления оси вращения и базовой оси координат, Rx – матрица поворота относительно оси X,[X] – матрица поворота на определенный угол, rotateMatrix – матрица в которой хранятся значения всех координат точек, которые описывают объект при повороте.
Рисунок 4. Траектория поворота
На рисунке 4 показана траектория поворта цилиндра, в основе которого лежат 180 описывающих точек, по 90 на каждую грань, поворот осуществлялся на угол 55 градусов, за 20 шагов, относительно оси x’ лежащей ниже оси x на 22,85мм.
Список литературы:
- Трехмерное вращение [электронный ресурс] – Режим доступа. URL: http://sernam.ru/book_mm3d.php?id=55 (дата обращения 16.06.2019)
Оставить комментарий