你搞砸了很多东西......事实上我会说,你让你的工作变得复杂了。你应该直接在矩阵上工作,以旋转到新的位置而不是阵列,并从图中选择它们。
这一行:
x_temp = get(h(1),'xdata'); % get x values
给你一个2 * 21数组,你的rot_mat是3X3 .....你不能乘以它们。你需要选择(x,y,z)并将这个点与旋转矩阵相乘以得到点移位。检查下面的伪代码.....你可以使用下面的示例代码开发你的逻辑。
t = 0:0.1:1; [X,Y,Z] = cylinder((t)); %% Rotation th = pi/2 ; Rx = [1 0 0 ; 0 cos(th) -sin(th) ; 0 sin(th) cos(th)] ; P0 = [X(:) Y(:) Z(:)] ; P1 = P0*Rx ; X1 = reshape(P1(:,1),size(X)) ; Y1 = reshape(P1(:,2),size(X)) ; Z1 = reshape(P1(:,3),size(X)) ; figure hold on surf(X,Y,Z) surf(X1,Y1,Z1) view(3)