所以,我对MatLab来说真的很新,我试图使用[X Y Z] = cylinder;
创建一个圆柱体。然后我得到了这3个矩阵:X
Y
和{{ 1}}如果我Z
它们会产生一个实际的圆柱体。现在,我需要做的是将mesh
圆柱体在[X Y Z]
轴上顺时针旋转90度。我知道有一个名为y
的命令,但我的老师要我明确使用旋转和转换矩阵。我怎样才能创建这些矩阵并将它们乘以圆柱?是否有更好的方法来制作圆柱体?我真的不习惯matlab,如果你能以详细的形式解释,我会非常感激。
答案 0 :(得分:2)
你应该使用R ^ 3的旋转矩阵作为线性映射。 MATLAB中有内置的功能,但我猜你不允许使用它们。
这是一个快速而肮脏的解决方案:
[X Y Z] = cylinder;
figure;
surf(X,Y,Z);
% set up rotation matrix:
angle_in_degrees = 90;
angle_in_rad = angle_in_degrees* pi/180;
rotationMatrix = [cos(angle_in_rad) 0 sin(angle_in_rad); 0 1 0; -sin(angle_in_rad) 0 cos(angle_in_rad)];
% get points at the two rings and rotate them separately:
positionOld1 = [X(1,:)',Y(1,:)',Z(1,:)'];
positionOld2 = [X(2,:)',Y(2,:)',Z(2,:)'];
positionNew1 = positionOld1*rotationMatrix;
positionNew2 = positionOld2*rotationMatrix;
% reassemble the two sets of points into X Y Z format:
X = [positionNew1(:,1),positionNew2(:,1)];
Y = [positionNew1(:,2),positionNew2(:,2)];
Z = [positionNew1(:,3),positionNew2(:,3)];
figure;
surf(X,Y,Z);