void mesh :: caluculateNormls(){
for (int i= 1; i< gridW-1; i++)// start from one
{
for (int j=1; j< gridH-1; j++)
{
Vec3d A = grid[i][j];
Vec3d B = grid[i][j-1];
Vec3d C = grid[i-1][j-1];
Vec3d D = grid[i-1][j];
//1 trangle
Vec3d AB = B - A;
Vec3d AC = C - A;
Vec3d normal = AC.cross(AB); // get perp vector
normal.normalize(); // gets the perpedicular line at the smallest vect length
normalsArray[i][j] = normalsArray[i][j]+normal; //A point
normalsArray[i][j-1] = normalsArray[i][j-1]+normal; //B
normalsArray[i-1][j-1] = normalsArray[i-1][j-1]+normal; //C
//2
AC = C - A;
Vec3d AD = D - A;
Vec3d normal2 = AD.cross(AC); // get perp vector
normal2.normalize(); // gets the perpedicular line at the smallest vect length
normalsArray[i][j] = normalsArray[i][j]+normal2; //A
normalsArray[i][j-1] = normalsArray[i][j-1]+normal2;//B
normalsArray[i-1][j] = normalsArray[i-1][j]+normal2;//D
}
}
for (int i= 0; i< gridW; i++)// start from one
{
for (int j=0; j< gridH; j++)
{
normalsArray[i][j].normalize();
normalsArray[i][j]= normalsArray[i][j];
//draw them
/*
Vec3d aveNormal= normalsArray[i][j];
glColor3f( 1,0,0 );
glBegin( GL_LINE_STRIP );
glVertex3f(grid[i][j].x,grid[i][j].y,grid[i][j].z);
glVertex3f(aveNormal.x,aveNormal.y,aveNormal.z);
glEnd();
*/
}
}
}