Matrix Real - Rotate around X Axis

 Followings are the code that I wrote in Octave to creates all the plots shown in this page. You may copy these code and play with these codes. Change variables and try yourself until you get your own intuitive understanding.   < Code 1 >   clear all;   % vertices of the cube   vert = [-0.5 -0.5 -0.5;  ...         -0.5 0.5 -0.5;  ...          0.5 0.5 -0.5;  ...          0.5 -0.5 -0.5; ...         -0.5 -0.5 0.5; ...          -0.5 0.5 0.5;  ...           0.5 0.5 0.5; ...           0.5 -0.5 0.5];     fac = [1 2 3 4; ...     2 6 7 3; ...     4 3 7 8; ...     1 5 8 4; ...     1 2 6 5; ...     5 6 7 8];     hFig = figure(1,'Position',[300 300 600 500]);     % transformed object % This code add a vector to each vertices of the cube and store the result into TxVertices   phi = pi/6; clear all;     % vertices of the cube   vert = [-0.5 -0.5 -0.5;  ...         -0.5 0.5 -0.5;  ...          0.5 0.5 -0.5;  ...          0.5 -0.5 -0.5; ...         -0.5 -0.5 0.5; ...          -0.5 0.5 0.5;  ...           0.5 0.5 0.5; ...           0.5 -0.5 0.5];     fac = [1 2 3 4; ...     2 6 7 3; ...     4 3 7 8; ...     1 5 8 4; ...     1 2 6 5; ...     5 6 7 8];     hFig = figure(1,'Position',[300 300 600 500]);     % transformed object % This code add a vector to each vertices of the cube and store the result into TxVertices   n = 20; phi = n * pi/10;   TxMatrix = [1     0          0 ; ...             0    cos(phi)   -sin(phi); ...             0    sin(phi)   cos(phi)];   TxVertices = TxMatrix * vert'; TxVertices = TxVertices';     % transformed object   subplot(2,2,1); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(30,30); title('transformed'); xlabel('x');ylabel('y');zlabel('z'); tStr = sprintf("rotating angle = (%d pi)/10",n); title(tStr);       % view along y-axis (x-z plane)   subplot(2,2,2); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(0,0); title('x-z plane'); xlabel('x');ylabel('y');zlabel('z');     % view along x-axis (y-z plane)   subplot(2,2,3); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(90,0); title('y-z plane'); xlabel('x');ylabel('y');zlabel('z');     % view along z-axis (x-y plane)   subplot(2,2,4); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(0,90); title('x-y plane'); xlabel('x');ylabel('y');zlabel('z'); Sx = 1.0; Sy = 1.0; Sz = 1.0; Sh12 = 0.0; Sh13 = 0.0; Sh21 = 0.0; Sh23 = 0.0; Sh31 = 0.0; Sh32 = 0.0;   TxMatrix = [Sx     Sh12      Sh13 ; ...             Sh21    Sy       Sh23; ...             Sh31    Sh32       Sz];   TxVertices = TxMatrix * vert'; TxVertices = TxVertices';     % transformed object   subplot(2,2,1); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(30,30); title('transformed'); xlabel('x');ylabel('y');zlabel('z'); tStr = sprintf("Sx = %0.1f, Sy = %0.1f, Sz = %0.1f",Sx,Sy,Sz); title(tStr);       % view along y-axis (x-z plane)   subplot(2,2,2); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(0,0); title('x-z plane'); xlabel('x');ylabel('y');zlabel('z');     % view along x-axis (y-z plane)   subplot(2,2,3); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(90,0); title('y-z plane'); xlabel('x');ylabel('y');zlabel('z');     % view along z-axis (x-y plane)   subplot(2,2,4); patch('Faces',fac,'Vertices',TxVertices,'FaceColor','b');   axis([-2 2 -2 2 -2 2]); grid(); view(0,90); title('x-z plane'); xlabel('x');ylabel('y');zlabel('z');