checkpoint
[anneal.git] / src / edu / berkeley / qfat / Main.java
index 5195886..7f99039 100644 (file)
@@ -68,23 +68,23 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         mousey = e.getY();
     }
 
-    private Geom tile = new Geom();
-    private Geom goal = new Geom();
+    private Mesh tile = new Mesh();
+    private Mesh goal = new Mesh();
 
     /** magnification factor */
     private static final float MAG = 1;
 
     Matrix[] translations;
-    Geom.Vert[] points;
+    Mesh.Vert[] points;
 
     public Main(StlFile stlf) {
 
         for(int i=0; i<stlf.coordArray.length; i+=3) {
-            Geom.Vert p0 = goal.register(new Point(stlf.coordArray[i+0].x * MAG, stlf.coordArray[i+0].y * MAG, stlf.coordArray[i+0].z * MAG));
-            Geom.Vert p1 = goal.register(new Point(stlf.coordArray[i+1].x * MAG, stlf.coordArray[i+1].y * MAG, stlf.coordArray[i+1].z * MAG));
-            Geom.Vert p2 = goal.register(new Point(stlf.coordArray[i+2].x * MAG, stlf.coordArray[i+2].y * MAG, stlf.coordArray[i+2].z * MAG));
+            Mesh.Vert p0 = goal.register(new Point(stlf.coordArray[i+0].x * MAG, stlf.coordArray[i+0].y * MAG, stlf.coordArray[i+0].z * MAG));
+            Mesh.Vert p1 = goal.register(new Point(stlf.coordArray[i+1].x * MAG, stlf.coordArray[i+1].y * MAG, stlf.coordArray[i+1].z * MAG));
+            Mesh.Vert p2 = goal.register(new Point(stlf.coordArray[i+2].x * MAG, stlf.coordArray[i+2].y * MAG, stlf.coordArray[i+2].z * MAG));
             Vec n  = new Vec(stlf.normArray[i/3].x * MAG, stlf.normArray[i/3].y  * MAG, stlf.normArray[i/3].z * MAG);
-            Geom.T t  = goal.newT(p0, p1, p2, n);
+            Mesh.T t  = goal.newT(p0, p1, p2, n);
         }
 
         // rotate to align major axis -- this probably needs to be done by a human.
@@ -118,20 +118,20 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         };
 
 
-        Geom.Vert ltf = tile.register(new Point(-(width/2),  (height/2),  (depth/2)));
-        Geom.Vert mtf = tile.register(new Point( 0.0,        (height/2),  (depth/2)));
-        Geom.Vert rtf = tile.register(new Point( (width/2),  (height/2),  (depth/2)));
-        Geom.Vert ltn = tile.register(new Point(-(width/2),  (height/2), -(depth/2)));
-        Geom.Vert mtn = tile.register(new Point( 0.0,        (height/2), -(depth/2)));
-        Geom.Vert rtn = tile.register(new Point( (width/2),  (height/2), -(depth/2)));
-        Geom.Vert lbf = tile.register(new Point(-(width/2), -(height/2),  (depth/2)));
-        Geom.Vert mbf = tile.register(new Point( 0.0,       -(height/2),  (depth/2)));
-        Geom.Vert rbf = tile.register(new Point( (width/2), -(height/2),  (depth/2)));
-        Geom.Vert lbn = tile.register(new Point(-(width/2), -(height/2), -(depth/2)));
-        Geom.Vert mbn = tile.register(new Point( 0.0,       -(height/2), -(depth/2)));
-        Geom.Vert rbn = tile.register(new Point( (width/2), -(height/2), -(depth/2)));
+        Mesh.Vert ltf = tile.register(new Point(-(width/2),  (height/2),  (depth/2)));
+        Mesh.Vert mtf = tile.register(new Point( 0.0,        (height/2),  (depth/2)));
+        Mesh.Vert rtf = tile.register(new Point( (width/2),  (height/2),  (depth/2)));
+        Mesh.Vert ltn = tile.register(new Point(-(width/2),  (height/2), -(depth/2)));
+        Mesh.Vert mtn = tile.register(new Point( 0.0,        (height/2), -(depth/2)));
+        Mesh.Vert rtn = tile.register(new Point( (width/2),  (height/2), -(depth/2)));
+        Mesh.Vert lbf = tile.register(new Point(-(width/2), -(height/2),  (depth/2)));
+        Mesh.Vert mbf = tile.register(new Point( 0.0,       -(height/2),  (depth/2)));
+        Mesh.Vert rbf = tile.register(new Point( (width/2), -(height/2),  (depth/2)));
+        Mesh.Vert lbn = tile.register(new Point(-(width/2), -(height/2), -(depth/2)));
+        Mesh.Vert mbn = tile.register(new Point( 0.0,       -(height/2), -(depth/2)));
+        Mesh.Vert rbn = tile.register(new Point( (width/2), -(height/2), -(depth/2)));
         
-        points = new Geom.Vert[] {
+        points = new Mesh.Vert[] {
             ltf,
             mtf,
             rtf,
@@ -180,27 +180,27 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         tile.newT(rbf, mtf, mbf);
 
         for(Matrix m : translations) {
-            for(Geom.T t1 : tile) {
-                for(Geom.T t2 : tile) {
+            for(Mesh.T t1 : tile) {
+                for(Mesh.T t2 : tile) {
                     if (t1==t2) continue;
 
-                    if ((t1.p1().p.times(m).minus(t2.p1().p).mag() < Geom.EPSILON) &&
-                        (t1.p2().p.times(m).minus(t2.p3().p).mag() < Geom.EPSILON) &&
-                        (t1.p3().p.times(m).minus(t2.p2().p).mag() < Geom.EPSILON)) {
+                    if ((t1.p1().p.times(m).minus(t2.p1().p).mag() < Mesh.EPSILON) &&
+                        (t1.p2().p.times(m).minus(t2.p3().p).mag() < Mesh.EPSILON) &&
+                        (t1.p3().p.times(m).minus(t2.p2().p).mag() < Mesh.EPSILON)) {
                         t1.e1().bind(t2.e3().pair);
                         t1.e2().bind(t2.e2().pair);
                         t1.e3().bind(t2.e1().pair);
                     }
-                    if ((t1.p2().p.times(m).minus(t2.p1().p).mag() < Geom.EPSILON) &&
-                        (t1.p3().p.times(m).minus(t2.p3().p).mag() < Geom.EPSILON) &&
-                        (t1.p1().p.times(m).minus(t2.p2().p).mag() < Geom.EPSILON)) {
+                    if ((t1.p2().p.times(m).minus(t2.p1().p).mag() < Mesh.EPSILON) &&
+                        (t1.p3().p.times(m).minus(t2.p3().p).mag() < Mesh.EPSILON) &&
+                        (t1.p1().p.times(m).minus(t2.p2().p).mag() < Mesh.EPSILON)) {
                         t1.e2().bind(t2.e3().pair);
                         t1.e3().bind(t2.e2().pair);
                         t1.e1().bind(t2.e1().pair);
                     }
-                    if ((t1.p3().p.times(m).minus(t2.p1().p).mag() < Geom.EPSILON) &&
-                        (t1.p1().p.times(m).minus(t2.p3().p).mag() < Geom.EPSILON) &&
-                        (t1.p2().p.times(m).minus(t2.p2().p).mag() < Geom.EPSILON)) {
+                    if ((t1.p3().p.times(m).minus(t2.p1().p).mag() < Mesh.EPSILON) &&
+                        (t1.p1().p.times(m).minus(t2.p3().p).mag() < Mesh.EPSILON) &&
+                        (t1.p2().p.times(m).minus(t2.p2().p).mag() < Mesh.EPSILON)) {
                         t1.e3().bind(t2.e3().pair);
                         t1.e1().bind(t2.e2().pair);
                         t1.e2().bind(t2.e1().pair);
@@ -209,7 +209,7 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
             }
         }
 
-        //xGeom.Vert mid = lbf.getE(mbn).shatter();
+        //xMesh.Vert mid = lbf.getE(mbn).shatter();
 
         // rescale to match volume
         float factor = (float)Math.pow(tile.volume() / goal.volume(), 1.0/3.0);
@@ -242,10 +242,10 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         if (verts > 300) return;
         //double min = (tile.avgedge/tile.numedges)*(1+(4/(double)verts));
         //if (verts>0 && tile.es.peek().length() < min) return;
-        PriorityQueue<Geom.E> es = new PriorityQueue<Geom.E>();
-        for(Geom.E e : tile.es) es.add(e);
+        PriorityQueue<Mesh.E> es = new PriorityQueue<Mesh.E>();
+        for(Mesh.E e : tile.es) es.add(e);
         for(int i=0; i<10; i++) {
-            Geom.E e = es.poll();
+            Mesh.E e = es.poll();
             verts++;
             System.out.println("shatter " + e);
             e.shatter();
@@ -254,7 +254,7 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         }
     }
 
-    public synchronized void rand(double temperature, Geom.Vert p) {
+    public synchronized void rand(double temperature, Mesh.Vert p) {
         double tile_score = tile.score();
         double goal_score = goal.score();
         
@@ -364,11 +364,11 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
         //gl.glEnable(GL.GL_DEPTH_TEST);
     }
 
-    private synchronized void draw(GL gl, boolean triangles, Geom mesh) {
+    private synchronized void draw(GL gl, boolean triangles, Mesh mesh) {
         float red = 0.0f;
         float green = 0.0f;
         float blue = 0.0f;
-        for(Geom.T t : mesh) {
+        for(Mesh.T t : mesh) {
             if (red < 0.15) red = 1.0f;
             if (green < 0.15) green = 1.0f;
             if (blue < 0.15) blue = 1.0f;
@@ -408,7 +408,7 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
             */
 
             if (mesh==goal)
-                for(Geom.Vert p : new Geom.Vert[] { t.p1(), t.p2(), t.p3() }) {
+                for(Mesh.Vert p : new Mesh.Vert[] { t.p1(), t.p2(), t.p3() }) {
                     p.p.glVertex(gl);
                     //p.plus(p.norm().times(p.score()*10)).glVertex(gl);
                     p.partner().p.glVertex(gl);
@@ -449,8 +449,8 @@ public class Main implements GLEventListener, MouseListener, MouseMotionListener
             for(int i=0; i<1; i++) {
                 glcanvas.repaint();
                 //tile.ts.get(Math.abs(random.nextInt()) % tile.ts.size()).e1().p1
-                for(Geom.T t : tile)
-                    for(Geom.Vert p : new Geom.Vert[] { t.p1(), t.p2(), t.p3() }) {
+                for(Mesh.T t : tile)
+                    for(Mesh.Vert p : new Mesh.Vert[] { t.p1(), t.p2(), t.p3() }) {
                         rand(10,p);
                     }
                 goal.rescore();