- boolean alt = false;
- boolean shift = false;
- boolean control = false;
-
- public Point getMouse() {
- return new Point(mousex, glcanvas.getHeight()-mousey, 0);
- }
-
- public void mouseWheelMoved(MouseWheelEvent e) {
- tz -= e.getWheelRotation();
- }
-
- public void keyTyped(KeyEvent e) { }
- public void keyPressed(KeyEvent e) {
- switch(e.getKeyCode()) {
- case KeyEvent.VK_CONTROL: control = true; break;
- case KeyEvent.VK_ALT: alt = true; break;
- case KeyEvent.VK_SHIFT: shift = true; break;
- case KeyEvent.VK_SPACE: breaks++; force = true; break;
- case KeyEvent.VK_UP: temp = temp * 2; break;
- case KeyEvent.VK_ENTER: temp = 10; break;
- case KeyEvent.VK_LEFT: whichNeighbor--; break;
- case KeyEvent.VK_RIGHT: whichNeighbor++; break;
- case KeyEvent.VK_D: dump(); break;
- case KeyEvent.VK_E: errorNormals = !errorNormals; break;
- case KeyEvent.VK_A: hillclimb = false; anneal = !anneal; break;
- case KeyEvent.VK_H: anneal = true; hillclimb = !hillclimb; break;
- case KeyEvent.VK_N: neighbors = !neighbors; break;
- case KeyEvent.VK_T: tileon = !tileon; break;
- case KeyEvent.VK_G: goalon = !goalon; break;
- case KeyEvent.VK_M: tilemeshon = !tilemeshon; break;
- }
- }
- public synchronized void dump() {
- try {
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("dump.stl")));
- pw.println("solid dump");
- for(Mesh.T t : tile) {
- Vec normal = t.norm();
- pw.println("facet normal " + normal.x + " " + normal.y + " " + normal.z);
- pw.println(" outer loop");
- for(Mesh.Vertex v : new Mesh.Vertex[] { t.v1(), t.v2(), t.v3() }) {
- pw.println(" vertex " + v.p.x + " " + v.p.y + " " + v.p.z);
- }
- pw.println(" endloop");
- pw.println("endfacet");
- }
- pw.println("endsolid dump");
- pw.flush();
- pw.close();
- } catch (Exception e) { throw new RuntimeException(e); }
- }
- public void keyReleased(KeyEvent e) {
- switch(e.getKeyCode()) {
- case KeyEvent.VK_CONTROL: control = false; break;
- case KeyEvent.VK_ALT: alt = false; break;
- case KeyEvent.VK_SHIFT: shift = false; break;
- }
- }
-
- public void mouseClicked(MouseEvent e) { }
- public void mouseEntered(MouseEvent e) { }
- public void mouseExited(MouseEvent e) { }
- public void mousePressed(MouseEvent e) { }
- public void mouseReleased(MouseEvent e) { }
-
- int mousex;
- int mousey;
- public void mouseMoved(MouseEvent e) {
- mousex = e.getX();
- mousey = e.getY();
- }
-
- float tx = 0;
- float ty = 0;
- float tz = 0;
- float anglex = 0;
- float angley = 0;
- public void mouseDragged(MouseEvent e) {
- if (shift) {
- tx += (mousex - e.getX())/(float)20;
- ty += (mousey - e.getY())/(float)20;
- } else {
- anglex -= mousex - e.getX();
- angley += mousey - e.getY();
- }
- mousex = e.getX();
- mousey = e.getY();
- }
-
- /**
- * Take care of initialization here.
- */
- public void init(GLAutoDrawable gld) {
- GL gl = gld.getGL();
- gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
- gl.glViewport(0, 0, 500, 300);
- gl.glEnable(GL.GL_DEPTH_TEST);
- gl.glClearDepth(1.0);
- gl.glDepthFunc(GL.GL_LEQUAL);
- gl.glMatrixMode(GL.GL_PROJECTION);
- gl.glLoadIdentity();
- gl.glMatrixMode(GL.GL_MODELVIEW);
-
- float mat_specular[] = { 0.5f, 0.5f, 0.5f, 0.5f };
- float mat_shininess[] = { 50.0f };
- gl.glShadeModel(GL.GL_SMOOTH);
- //gl.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, mat_specular, 0);
- //gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, mat_specular, 0);
- //gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, new float[] { 0.3f, 0.3f, 0.3f, 0.3f }, 0);
- //gl.glMaterialfv(GL.GL_FRONT, GL.GL_SHININESS, mat_shininess, 0);
- gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] { 1.0f, 4.0f, -10.0f, 0.0f }, 0);
- gl.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, new float[] { -10.0f, 10.0f, 10.0f, 0.0f }, 0);
- gl.glLightfv(GL.GL_LIGHT2, GL.GL_POSITION, new float[] { 10.0f, -10.0f, 10.0f, 0.0f }, 0);
- gl.glLightfv(GL.GL_LIGHT3, GL.GL_POSITION, new float[] { 10.0f, 10.0f, -10.0f, 0.0f }, 0);
- gl.glLightfv(GL.GL_LIGHT4, GL.GL_POSITION, new float[] { -10.0f, 10.0f, -10.0f, 0.0f }, 0);
- gl.glLightfv(GL.GL_LIGHT5, GL.GL_POSITION, new float[] { 10.0f, -10.0f, -10.0f, 0.0f }, 0);
- gl.glEnable(GL.GL_LIGHTING);
- gl.glEnable(GL.GL_LIGHT0);
- /*
- gl.glEnable(GL.GL_LIGHT1);
- gl.glEnable(GL.GL_LIGHT2);
- gl.glEnable(GL.GL_LIGHT3);
- gl.glEnable(GL.GL_LIGHT4);
- gl.glEnable(GL.GL_LIGHT5);
- */
- gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
- gl.glEnable(GL.GL_COLOR_MATERIAL);
-
- display(gld);
- }