Вращайте вокруг произвольной оси

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

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

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

Вращайте Поверхность

В этом примере показано, как повернуть поверхность вокруг оси Y.

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

Родительский объект поверхности преобразования.

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

Figure contains an axes. The axes contains an object of type surface.

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

Установите матрицу поворота оси Y, чтобы повернуть поверхность на -15 степени.

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

Figure contains an axes. The axes contains an object of type surface.

Поверхность повернута на -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;

Figure contains an axes. The axes contains an object of type surface.