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 thezaxis, the following works:First, note that the
zcoordinate will stay the same. So, the problem boils down to rotating the point(x,y)in the plane around the origin. Letthetabe the angle from thexaxis defined as usual, and letrbe 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
phidegrees around thezaxis. You want the point having lengthrbut angletheta + phi. Its coordinates are:(r * cos(theta + phi), r * sin(theta + phi))Rotating around the
yaxis can be done similarly, by replacing everyyin the above calculations with az.