I want to rotate a Vector(0, -10, 0) around the X and Y axis. I want to rotate X rotX degrees(0 - 360°) and Y rotY degrees(0 - 180°). I tried much but I couldnt get it done. Coudld anybody give me a solution for that? Some of my code I tried:
LightRotX = -posX;
LightRotY = -10 * cos((rotY) * PI / 180.0) - posZ * sin((rotY) * PI / 180.0);
LightRotZ = -10 * sin((rotY) * PI / 180.0) + posZ * cos((rotY) * PI / 180.0);
float bZ = LightRotZ;
float bX = LightRotX;
LightRotX = bZ * sin((rotX) * PI / 180.0) + bX * cos((rotX) * PI / 180.0);
LightRotZ = bZ * cos((rotX) * PI / 180.0) - bX * sin((rotX) * PI / 180.0);
To rotate the point (x,y,z) around the z axis, the following works:
First, note that the z coordinate will stay the same. So, the problem boils down to rotating the point (x,y) in the plane around the origin. Let theta be the angle from the x axis defined as usual, and let r be the length of the vector (x,y) in the plane. These can be computed as:
r = sqrt(x*x + y*y)theta = atan(y/x)Say you want to rotate by phi degrees around the z axis. You want the point having length r but angle theta + phi. Its coordinates are:
(r * cos(theta + phi), r * sin(theta + phi))Rotating around the y axis can be done similarly, by replacing every y in the above calculations with a z.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With