В этом примере показано, как вращать объект о произвольной оси.
Вращения выполняются вокруг начала координат. Поэтому необходимо выполнить перевод так, чтобы намеченная ось вращения была временно в начале координат. После применения матрицы преобразования вращением, объект переводится назад в его исходное положение.
В этом примере показано, как вращать поверхность об оси 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;