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