float D=-692.8203; float viewPar[][] = new float [10][2]; boolean printview=false; pt mark = new pt(0,0,0); pt eye = new pt(0,0,0); void changeView() { int k=int(key)-48; if ( ( 1 <= k) && (k<=3) ) { viewPar[k][0]+=mouseX-pmouseX; viewPar[k][1]+=mouseY-pmouseY; }; } void resetView() {for (int k=0; k<10; k++) { viewPar[k][0]=0; viewPar[k][1]=0; };} void updateView() { int k=0; k++; translate(0,0,-D); rotateY(-viewPar[k][0]/height); rotateX(viewPar[k][1]/height); translate(0,0,D); k++; translate(0,0,viewPar[k][1]); k++; translate(viewPar[k][0],viewPar[k][1],0); k++; rotateY(viewPar[k][0]/height); rotateX(-viewPar[k][1]/height); k++; translate(mark.x,mark.y,mark.z); rotateY(viewPar[k][0]/height); rotateX(-viewPar[k][1]/height); translate(-mark.x,-mark.y,-mark.z); // view(eye, mark); } void updateViewO() { int k=0; translate(0,0,-D); k++; rotateY(-viewPar[k][0]/height); rotateX(viewPar[k][1]/height); translate(0,0,D); k++; translate(0,0,viewPar[k][1]); k++; translate(viewPar[k][0],viewPar[k][1],0); k++; rotateZ (viewPar[k][0]/height); k++; rotateY(viewPar[k][0]/height); rotateX(-viewPar[k][1]/height); translate(mark.x,mark.y,mark.z); k++; rotateY(viewPar[k][0]/height); rotateX(-viewPar[k][1]/height); translate(-mark.x,-mark.y,-mark.z); // view(eye, mark); } void view(pt eye, pt mark) { vec I = new vec(1,0,0); vec J = new vec(0,1,0); vec K = new vec(0,0,1); pt O = new pt(0,0,-700+viewPar[1][1]); loadView(I,J,K,O); if(printview) printView(); } void loadView(vec I, vec J, vec K, pt O) { resetCamera(); resetMatrix(); applyMatrix( I.x,J.x,K.x,O.x, I.y,J.y,K.y,O.y, I.z,J.z,K.z,O.z, 0.0,0.0,0.0,1.0 ); } void printView() { println("PROJECTION:"); printProjection(); println("MATRIX:"); printMatrix(); printview=false; }; void resetCamera() { beginCamera(); resetMatrix(); applyMatrix( 001.0000, 000.0000, 000.0000, 000.0000, 000.0000, 001.0000, 000.0000, 000.0000, 000.0000, 000.0000, -001.0000, -140.0000, 000.0000, 000.0000, -001.0000, 000.0000 ); endCamera(); } void resetCameraO() { beginCamera(); resetMatrix(); applyMatrix( 001.7321, 000.0000, 000.0000, 000.0000, 000.0000, 001.7321, 000.0000, 000.0000, 000.0000, 000.0000, -001.0000, -140.0000, 000.0000, 000.0000, -001.0000, 000.0000 ); endCamera(); } void resetCameraO0() { beginCamera(); translate(0,0,D); endCamera(); }