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();

  */

      }

   

   

  }


 }