void mesh :: drawShadedFrame(Vec3d _light){


   Vec3d VP= Vec3d();

   //draw

glColor3f( 0,1,1 );

float counter=0;

_light.print();

for( int x=0; x<gridW-1; x++ )

{

//glBegin(GL_LINE_STRIP); //each row gets a strip

for( int y=0; y<gridH-1; y++ )

{

   

Vec3d A = grid[x][y] ;

Vec3d B = grid[x+1][y] ;

Vec3d C = grid[x+1][y+1] ;

Vec3d D = grid[x][y+1] ;

shadedTriangleDraw( A, B, C, _light);

shadedTriangleDraw(D ,A ,C, _light );

    }

// glEnd();

}

}   

   

void mesh::shadedTriangleDraw( Vec3d _A, Vec3d _B, Vec3d _C,Vec3d L){


 //define triangle vectors

 Vec3d AB = _B - _A;

 Vec3d AC = _C - _A;


 Vec3d normal = AB.cross(AC); // get perp vector

// printf(" %f",normal.vectorLength());

 normal = normal/normal.vectorLength(); // gets the perpedicular line at the smallest vect length

// printf(" %f",normal.vectorLength());


 float shade = L.dot(normal); // gets smallest vect length

  //printf(" %f",shade);

 

 // draw

/*  glColor3f( 1,0,0 );

  glBegin(GL_LINE_STRIP);

  glVertex3f( normal.x,normal.y,normal.z );

  glVertex3f( _C.x,_C.y,_C.z );

  */

  

   glEnd();

 glColor3f( 0,1,1 );

 glBegin(GL_LINE_LOOP);

  glVertex3f( _A.x,_A.y,_A.z );

  glVertex3f( _B.x,_B.y,_B.z );

  glVertex3f( _C.x,_C.y,_C.z );

 glEnd();


  glColor3f(shade,shade,shade);

 glBegin(GL_TRIANGLES);

  glVertex3f( _A.x,_A.y,_A.z );

  glVertex3f( _B.x,_B.y,_B.z );

  glVertex3f( _C.x,_C.y,_C.z );

 glEnd();

 


}