exponenta event banner

Поворот вокруг произвольной оси

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

Преобразовать в начало перед поворотом

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

Поворот поверхности

В этом примере показано, как повернуть поверхность вокруг оси 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.