-1

我需要操縱矩陣vert來創建z軸的旋轉。使用Matlab的圖像旋轉

我將這個矩陣轉置並乘以矩陣旋轉...再次移調並嘗試排除在補丁函數中使用此四列。

可是事情似乎沒有工作,messagem會出現的是:

???錯誤使用==> mtimes 內部矩陣維度必須一致。

問題是在圖中使用[x y z;]的補丁函數,但對於矩陣旋轉,我需要列中的矩陣[x y z 1;]。

enter code here 

clf; 
figure(1); 
format compact 
h(1) = axes('Position',[0.2 0.2 0.6 0.6]); 
vert = [1 1 -1 1; 
     -1 1 -1 1; 
     -1 1 1 1; 
     1 1 1 1; 
     -1 -1 1 1; 
     1 -1 1 1; 
     1 -1 -1 1; 
     -1 -1 -1 1]; 
fac = [1 2 3 4; 
     4 3 5 6; 
     6 7 8 5; 
     1 2 8 7; 
     6 7 1 4; 
     2 3 5 8]; 
theta = 30; 
rotacaoz = [cos(theta) -sin(theta) 0 0; 
sin(theta) cos(theta) 0 0; 
0 0 1 0; 
0 0 0 1]; 
vertices = vert'; 
vertices = vertices * rotacaoz; 
vertices = vertices'; 
vertices(:,[3 4])=[] 
patch('Faces',fac,'Vertices',vertices,'FaceColor','c'); % patch function 
axis([-1, 1, -1, 1, -1, 1]); 
axis equal; 
hold on; 
material metal; 
alpha('color'); 
alphamap('rampdown'); 
view(3); 
+0

http://en.wikipedia.org/wiki/Matrix_multiplication#General_definition_of_the_matrix_product – chappjc

回答

1

對於旋轉矩陣R和點p,旋轉的點是R * p,而不是p * R。

正確:

vertices = rotacaoz*vertices;