
glrotatef and my matrix::rotate
hi all,
i want to obtain a mousellok effect.
using fixed opengl function, this can be made doing
glRotate(angley,0,1,0);
glRotate(anglex,1,0,0);
using my matrix class, the result is not as above:
mat4 cammtx;
cammtx.rotate(angley,0,1,0);
cammtx.rotate(anglex,1,0,0);
because camera not still holding the y axis
why can i achieve the same glRotate behaviour with my matrix::rotate implementation?
here is my rotate function (input vector is not normalized, i know, but i pass only unit vectors)
void rotate(float* mr,float* m,float angle,float x,float y,float z)
{
float a=angle*PI_OVER_180;
float m2[16] = {0};
float c=cos(a);
float s=sin(a);
float xx=x*x,
yy=y*y,
zz=z*z;
m2[0] = xx+(1.0fxx)*c;
m2[4] = (1.0fc)*x*ys*z;
m2[8] = (1.0fc)*x*z+s*y;
m2[3] = 0.0f;
m2[1] = (1.0fc)*y*x+s*z;
m2[5] = yy+(1.0fyy)*c;
m2[9] = (1.0fc)*y*zs*x;
m2[7] = 0.0f;
m2[2] = (1.0fc)*z*xs*y;
m2[6] = (1.0fc)*z*y+s*x;
m2[10] = zz+(1.0fzz)*c;
m2[11] = 0.0f;
m2[12] = 0;
m2[13] = 0;
m2[14] = 0;
m2[15] = 1.0f;
multiply(mr,m2,m);
}
float* multiply(float* c,float* aa,float* bb)
{
for(int i = 0; i < 4; i++)
{
c[i*4] = bb[i*4] * aa[0] + bb[i*4+1] * aa[4] + bb[i*4+2] * aa[8] + bb[i*4+3] * aa[12];
c[i*4+1] = bb[i*4] * aa[1] + bb[i*4+1] * aa[5] + bb[i*4+2] * aa[9] + bb[i*4+3] * aa[13];
c[i*4+2] = bb[i*4] * aa[2] + bb[i*4+1] * aa[6] + bb[i*4+2] * aa[10] + bb[i*4+3] * aa[14];
c[i*4+3] = bb[i*4] * aa[3] + bb[i*4+1] * aa[7] + bb[i*4+2] * aa[11] + bb[i*4+3] * aa[15];
}
return c;
}
thank you for your time
elemich
Last edited by elemich; 12132013 at 08:14 AM.

hi elemich,
It might not be my business to ask why, but ..
The functions (or something eqvivalent) are present in both glu and glm (Openglmathematics) and there is nothing that prevents you from using it.
I'm not in for checking your code. It's not particular GL but appear in a lot of places all related to 3d graphics.
You get your question through, but what is "a mousellok effect".
"because camera not still holding the y axis" .. is not understood either.
Sooner or later you want to solve matrixequations (find the inverse matrix). By that time you'll know how glm works and have no problem taking advantage of it ..
Last edited by CarstenT; 12142013 at 12:47 AM.
Posting Permissions
 You may not post new threads
 You may not post replies
 You may not post attachments
 You may not edit your posts

Forum Rules