Week 10 Assignment

 

Problem1-2

void Mesh::drawShadedSolid()
{

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

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

Vec3d A=grid[i][j];
Vec3d B=grid[i+1][j];
Vec3d C=grid[i+1][j+1];

Vec3d AB=B-A;
Vec3d AC=C-A;
Vec3d N= AB.cross(AC);
Vec3d normN=N/N.getLength();

Vec3d L(400, 20, 0);
Vec3d AL=L-A;

Vec3d normL=AL/AL.getLength();

float shade=normL.dot(normN);

glBegin(GL_TRIANGLES);
glColor3f(shade,shade,shade);
//glVertex3f( grid[i][j].x,grid[i][j].y,grid[i][j].z);

glVertex3fv((float*) &grid[i][j]);
glVertex3fv((float*) &grid[i+1][j]);
glVertex3fv((float*) &grid[i+1][j+1]);
glEnd();

glBegin(GL_TRIANGLES);
glVertex3fv((float*) &grid[i][j]);
glVertex3fv((float*) &grid[i][j+1]);
glVertex3fv((float*) &grid[i+1][j+1]);
glEnd();
}
}



}

void Mesh::drawWireframe()
{

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

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

//glVertex3f( grid[i][j].x,grid[i][j].y,grid[i][j].z);
glBegin(GL_LINE_LOOP);
glVertex3fv((float*) &grid[i][j]);
glVertex3fv((float*) &grid[i+1][j]);
glVertex3fv((float*) &grid[i+1][j+1]);
glEnd();

glBegin(GL_LINE_LOOP);
glVertex3fv((float*) &grid[i][j]);
glVertex3fv((float*) &grid[i][j+1]);
glVertex3fv((float*) &grid[i+1][j+1]);
glEnd();
}
}
}

 

void Mesh::makeGrid(){

for (int i=0; i<gridW; i++){

for(int j=0; j<gridH; j++){
grid[i][j].x=i*5;
grid[i][j].y=j*5;
grid[i][j].z=0;

}

}


}