Вращение о произвольной оси

Этот пример показывает, как вращать объект о произвольной оси.

Перевод в источник перед вращением

Вращения выполняются об источнике. Поэтому необходимо выполнить перевод так, чтобы намеченная ось вращения была временно в начале координат. После применения вращения преобразовывают матрицу, вы затем переводите объект назад в его исходное положение.

Вращение поверхности

Этот пример показывает, как вращать поверхность об оси Y.

Создайте поверхность и преобразование

Породите поверхность к объекту преобразования.

t = hgtransform;
surf(peaks(40),'Parent',t)
view(-20,30)
axis manual

Создайте преобразование

Установите матрицу вращения оси Y вращать поверхность-15 градусами.

ry_angle = -15*pi/180; 
Ry = makehgtform('yrotate',ry_angle);
t.Matrix = Ry;

Поверхность вращала-15 градусов об оси Y, которая проходит через источник.

Переведите поверхность и вращайте

Теперь вращайте поверхность об оси Y, которая проходит через точку x = 20.

Создайте две матрицы перевода, один, чтобы перевести поверхность-20 модулей в x и другом, чтобы перевести 20 модулей назад. Конкатенируйте две матрицы перевода с матрицей вращения в правильном порядке и установите преобразование.

Tx1 = makehgtform('translate',[-20 0 0]);
Tx2 = makehgtform('translate',[20 0 0]);
t.Matrix = Tx2*Ry*Tx1;

Была ли эта тема полезной?