void calculatenormal(float v1[3],float v2[3],float v3[3],float &normalx, float &normaly,float &normalz){
float d1[3] = { v2[0] - v1[0], v2[1] - v1[1], v2[2] - v1[2] };
float d2[3] = { v3[0] - v1[0], v3[1] - v1[1], v3[2] - v1[2] };
float cross[3];
cross[0] = d1[1] * d2[2] - d1[2] * d2[1];
cross[1] = d1[2] * d2[0] - d1[0] * d2[2];
cross[2] = d1[0] * d2[1] - d1[1] * d2[0];
float dist;
dist = 1/sqrt( (cross[0]*cross[0]) + (cross[1]*cross[1]) + (cross[2]*cross[2]));
normalx = -cross[0] * dist;
normaly = -cross[1] * dist;
normalz = -cross[2] * dist;
And the call to it:
..........
glBegin(GL_TRIANGLE_STRIP);
float v1[3]={0,1,0};
float v2[3]={1,0,0};
float v3[3]={1,0,1};
float normal[3];
calculatenormal(v1,v2,v3,normal[0],normal[1],normal[2]);
glNormal3fv(normal);
glVertex3fv(v1);
glVertex3fv(v2);
glVertex3fv(v3);
glEnd();
........
I'd appreciate the help.
[Edited by - Aidamina on June 30, 2005 4:30:20 PM]