How to rotate cube in MATLAB.?

A = [0 0 0];
B = [1 0 0];
C = [0 1 0];
D = [0 0 1];
E = [0 1 1];
F = [1 0 1];
G = [1 1 0];
H = [1 1 1];
P = [A;B;F;H;G;C;A;D;E;H;F;D;E;C;G;B];
plot3(P(:,1),P(:,2),P(:,3))
I am creating a cube using this code.
Now i want to rotate this cube according to Roll, pitch and Yaw axis.
If R = -0.3064; P = -1.2258; Y = 9.8066
Then how to rotate this cube.?

 Accepted Answer

Add the following lines of code at the bottom of your code:
roll = -0.3064; pitch = -1.2258; yaw = 9.8066;
dcm = angle2dcm(yaw, pitch, roll);
P = P*dcm;
plot3(P(:,1),P(:,2),P(:,3)) % rotated cube

7 Comments

Thanks Shoaibur;
But when i give This code,
roll = 360; pitch = 360; yaw = 360;
dcm = angle2dcm(yaw, pitch, roll);
P = P*dcm;
plot3(P(:,1),P(:,2),P(:,3)) % rotated cube
grid on
xlabel('x')
ylabel('y')
zlabel('z')
figure(1);
it shifts origin also. But i didn't want to shift it. It should remain at 0 everytime.
As well i want to give legends to 3D image, and want to change face colors of cube.!
@Nimisha: No, the origin is not shifted by this rotation. If you want to keep a certain piont fixed, e.g. the center of the cube, subtract it from P before you multiply the rotation matrix dcm and add it afterwards again. bsxfun(@plus, ...) will help you.
The legends and the colors are new details, so please ask a new question or append it to the original question and mark the modifications clearly.
Nimisha
Nimisha on 31 Dec 2014
Edited: Nimisha on 2 Jan 2015
I can't modify code.! i searched many codes, but for this function
bsxfun(@plus,
i didnt get much help. please help me with modifying code"
Can anyone mofify my code.?
I don't understand, what modification you do want. As mentioned, the origin is not shifted by the above code. To check this, plot the origin and the original cube on the same figure of rotated cube as shown below:
A = [0 0 0];
B = [1 0 0];
C = [0 1 0];
D = [0 0 1];
E = [0 1 1];
F = [1 0 1];
G = [1 1 0];
H = [1 1 1];
P = [A;B;F;H;G;C;A;D;E;H;F;D;E;C;G;B];
plot3(P(:,1),P(:,2),P(:,3),'g'), hold on % original cube
roll = -0.3064; pitch = -1.2258; yaw = 9.8066;
dcm = angle2dcm(yaw, pitch, roll);
P = P*dcm;
plot3(P(:,1),P(:,2),P(:,3)) % rotated cube
plot3(0,0,0,'or')
You check this following code..
clear all;clc
A = [0 0 0];
B = [1 0 0];
C = [0 1 0];
D = [0 0 1];
E = [0 1 1];
F = [1 0 1];
G = [1 1 0];
H = [1 1 1];
P = [A;B;F;H;G;C;A;D;E;H;F;D;E;C;G;B];
plot3(P(:,1),P(:,2),P(:,3),'g'), hold on % original cube
roll = 360; pitch = 360; yaw = 360;
dcm = angle2dcm(yaw, pitch, roll);
P = P*dcm;
plot3(P(:,1),P(:,2),P(:,3)) % rotated cube
plot3(0,0,0,'or')
In this origin is shifted even all the faces are rotated by 360..
Please correct it.!
I guess, you are asking that if the rotation is 360 degrees, then both the original and rotated cube should look at the same position, right?
Instead of using 360, use 2*pi for roll, pitch, and yaw, i.e. in radians.
roll = 2*pi; pitch = 2*pi; yaw = 2*pi;
A = [0 0 0];
B = [1 0 0];
C = [0 1 0];
D = [0 0 1];
E = [0 1 1];
F = [1 0 1];
G = [1 1 0];
H = [1 1 1];
P = [A;B;F;H;G;C;A;D;E;H;F;D;E;C;G;B];
plot3(P(:,1),P(:,2),P(:,3),'g'), hold on
roll = 2*pi; pitch = 2*pi; yaw = 2*pi;
dcm = angle2dcm(yaw, pitch, roll);
P = P*dcm;
plot3(P(:,1),P(:,2),P(:,3)) % rotated cube
plot3(0,0,0,'or')
Thank You So Much,
Finally it works for me :)

Sign in to comment.

More Answers (0)

Asked:

on 28 Dec 2014

Commented:

on 3 Jan 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!