Из вашего вопроса не ясно, вокруг какой оси происходит ваше вращение.Однако мой ответ верен для общей оси вращения.
Сначала поместите ваши точки в трехмерное пространство, лежащее на плоскости XY.Это означает, что точки имеют координату 0 z.Затем примените трехмерное вращение нужного угла вокруг желаемой оси - в вашем примере это вращение на один градус.Вы можете рассчитать матрицу преобразования самостоятельно (не должно быть слишком сложно, Google "3D-матрица вращения" или подобные ключевые слова).Тем не менее, MATLAB делает это проще, используя функцию viewmtx
, которая дает вам матрицу вращения 4x4.Дополнительное (четвертое) измерение зависит от указанной вами проекции (оно действует как коэффициент масштабирования), но для простоты я позволю MATLAB использовать его проекцию по умолчанию - вы можете прочитать об этом в документации MATLAB.
Итак, чтобы сделать график более понятным, я предполагаю четыре точки, которые являются вершинами квадрата, лежащего на плоскости xy (A(1,1)
, B(1,-1)
, C(-1,-1)
, D(1,-1)
).
az = 0; % Angle (degrees) of rotation around the z axis, measured from -y axis.
el = 90; % Angle (degrees) of rotation around the y' axis (the ' indicates axes after the first rotation).
x = [1,-1, -1, 1,1]; y = [1, 1, -1, -1,1]; z = [0,0, 0, 0,0]; % A square lying on the X-Y plane.
[m,n] = size(x);
x4d = [x(:),y(:),z(:),ones(m*n,1)]'; % The 4D version of the points.
figure
for el = 90 : -1 :0 % Start from 90 for viewing directly above the X-Y plane.
T = viewmtx(az, el);
x2d = T * x4d; % Rotated version of points.
plot3 (x2d(1,:), x2d(2,:),x2d(3,:),'-*'); % Plot the rotated points in 3D space.
grid
xlim ([-2,2]);
ylim ([-2,2]);
zlim([-2,2]);
pause(0.1)
end