class MyFace{ int npoints = 0; MyPoint [] points; color c = color(255,255,255); MyFace (){ points = new MyPoint[0]; } MyFace(MyPoint[] inPoints){ points = new MyPoint[inPoints.length]; npoints = inPoints.length; for(int i=0; i 0.0) return false; //if clockwise else return true; //else ccw } color[] shadeTable; //define a table array void setShades(color c) { float r, g, b; r = red(c); //extract the color g = green(c); b = blue(c); r /= 255.; //get a unit g /= 255.; b /= 255.; shadeTable = new color[256]; //allocate memory for( int i = 0; i < 255; i++ ) shadeTable[i] = color((int)(r*i),(int)(g*i),(int)(b*i)); //draw the shade } MyVector vlight = new MyVector(0.5, -1., 2.); int getShade(){ int shade; MyVector v1 = new MyVector(); // MyVector v2 = new MyVector(); vlight.norm(); v1.buildVector( points[0], points[1] ).norm(); v2.buildVector( points[1], points[2] ).norm(); v1.cross(v2); if (v1.w < 0) { shade = 0 ; } else { //shade = (int)( 100+(155*v1.dot(vlight))); shade = (int)( 255*v1.dot(vlight)); println(shade); if (shade <= 0) shade = 0; } return shade; } }