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

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

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

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

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

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

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

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

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

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object contains an object of type surface.