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 thez
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. Lettheta
be the angle from thex
axis defined as usual, and letr
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 thez
axis. You want the point having lengthr
but angletheta + phi
. Its coordinates are:(r * cos(theta + phi), r * sin(theta + phi))
Rotating around the
y
axis can be done similarly, by replacing everyy
in the above calculations with az
.