add items to TODO list
[anneal.git] / src / edu / berkeley / qfat / InteractiveMeshViewer.java
index 419e209..f87f257 100644 (file)
@@ -8,6 +8,7 @@ import javax.media.opengl.*;
 import javax.media.opengl.glu.*;
 import com.sun.opengl.util.*;
 import java.util.*;
+import edu.berkeley.qfat.bind.*;
 import edu.berkeley.qfat.geom.*;
 import edu.berkeley.qfat.geom.Point;
 
@@ -23,6 +24,10 @@ public class InteractiveMeshViewer extends JPanel implements KeyListener {
         MeshViewer mv2 = new MeshViewer();
         MeshViewer mv3 = new MeshViewer();
         MeshViewer mv4 = new MeshViewer();
+        mv1.main = (Main)this;
+        mv2.main = (Main)this;
+        mv3.main = (Main)this;
+        mv4.main = (Main)this;
         mvs.add(mv1);
         mvs.add(mv2);
         mvs.add(mv3);
@@ -61,26 +66,6 @@ public class InteractiveMeshViewer extends JPanel implements KeyListener {
         for(MeshViewer mv : mvs) mv.addMesh(this.goal);
     }
 
-    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 int whichNeighbor = 1;
     public double temp;
     public boolean tileon = true;
@@ -94,7 +79,6 @@ public class InteractiveMeshViewer extends JPanel implements KeyListener {
     public boolean errorNormals = false;
 
     public boolean force = false;
-    public Mesh.Vertex[] points;
     public int breaks = 0;
 
     public int temps;
@@ -107,25 +91,33 @@ public class InteractiveMeshViewer extends JPanel implements KeyListener {
         //super.keyPressed(e);
         switch(e.getKeyCode()) {
             case KeyEvent.VK_SPACE:
-                System.err.println("hak");
                 synchronized(this) {
                     tile.subdivide();
+                    tile.rebindPoints();
                     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_N: whichNeighbor++; break;
             case KeyEvent.VK_RIGHT: whichNeighbor++; break;
-            case KeyEvent.VK_D: dump(); break;
+            case KeyEvent.VK_D:
+                try {
+                    tile.dump(new FileOutputStream("dump.stl"));
+                } catch (Exception ee) {
+                    throw new RuntimeException(ee);
+                }
+                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_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;
         }
+        if (transforms!=null)
+            whichNeighbor = (whichNeighbor % (transforms.length+1));
     }
-
+    public Matrix[] transforms;
 }
\ No newline at end of file