// Simulated screen for view control by dragging points // Written by Jarek Rossignac June 2006. Modified Septmber 2007 import processing.opengl.*; // load OpenGL import javax.media.opengl.*; import javax.media.opengl.glu.*; import java.nio.*; GL gl; GLU glu; float a=0; boolean pickS=false; // ** SETUP ** void setup() { size(800, 800, OPENGL); setColors(); sphereDetail(12); //smooth(); PFont font = loadFont("Courier-14.vlw"); textFont(font, 12); // font for writing labels on screen this.addMouseWheelListener(new CMouseWheelEvent());// wheel gl=((PGraphicsOpenGL)g).gl; glu=((PGraphicsOpenGL)g).glu; B.add(new pt(0,0,0),30); B.add(new pt(100,0,0),35); B.add(new pt(200,0,0),20); B.add(new pt(300,0,0),10); B.add(new pt(350,50,0),10); B.add(new pt(350,100,0),15); } // ** DRAW ** void draw() { lights(); directionalLight(0,0,128,0,1,0); directionalLight(0,0,128,0,0,1); background(white); fill(black); text("Click&drag on nodes to change their value.",10,20); noFill(); fill(black); text("Hold 1, 2, or 3 and drag to change the view. Press 'h' to reset it.",10,40); noFill(); pushMatrix(); translate(float(height)/2, float(height)/2, 0.0); // center view wrt window if (!picked) if (keyPressed&&mousePressed) {changeView(); if (key=='t') { }; }; updateView(); noStroke(); fill(green); S.showBalls(); if (!keyPressed&&mousePressed) { if (pick) {mark.setTo( fromMouse() ); eye.setTo(fromOrigin()); picked=S.pickBall(mark); pick=false;} ; if (picked) S.changeRadius(); else { viewPar[4][0]+=mouseX-pmouseX; viewPar[4][1]+=mouseY-pmouseY; }; }; fill(dgreen); S.showCaplets(12); a+=0.1; rotateY(a); fill(cyan); B.show(); popMatrix(); } //*** KEY ACTIONS (details in keys tab) void keyPressed() { keys(); }; void mousePressed() { pick=true; }; void mouseReleased() {picked=false;}; // reset the view if any key was pressed when mouse was released