checkpoint
authoradam <adam@megacz.com>
Wed, 5 Dec 2007 06:02:43 +0000 (22:02 -0800)
committeradam <adam@megacz.com>
Wed, 5 Dec 2007 06:02:43 +0000 (22:02 -0800)
darcs-hash:20071205060243-5007d-03b7c0c554a63c79cf859866c21f08fbfb1a0a6f.gz

src/edu/berkeley/qfat/Mesh.java

index d1fda3c..3b39842 100644 (file)
@@ -124,10 +124,23 @@ public class Mesh implements Iterable<Mesh.T> {
 
     public final class Vert extends HasPoint {
         public Point p;
+        E e;                // some edge *leaving* this point
+
+        Vert bound_to = this;
+        int watch_count;
+        float watch_x;
+        float watch_y;
+        float watch_z;
+        Vert watch;
+        Matrix binding = new Matrix();
+        float oldscore = 0;
+        boolean inserted = false;
+
         public Point getPoint() { return p; }
-        private Vert(Point p, E e) { this(p); }
         private Vert(Point p) {
             this.p = p;
+            //this.e = e;
+            //if (e==null) throw new Error();
             if (pointset.get(p) != null) throw new Error();
             pointset.add(this);
         }
@@ -286,17 +299,6 @@ public class Mesh implements Iterable<Mesh.T> {
             } while(e != this.e);
             return norm.norm();
         }
-
-        Vert bound_to = this;
-        int watch_count;
-        float watch_x;
-        float watch_y;
-        float watch_z;
-        Vert watch;
-        E e;                // some edge *leaving* this point
-        Matrix binding = new Matrix();
-        float oldscore = 0;
-        boolean inserted = false;
     }
 
     /** [UNIQUE] an edge */
@@ -419,9 +421,11 @@ public class Mesh implements Iterable<Mesh.T> {
         public E(Point p1, Point p2) {
             if (pointset.get(p1) != null) throw new Error();
             if (pointset.get(p2) != null) throw new Error();
-            this.p1 = new Vert(p1, this);
-            this.p2 = new Vert(p2, this);
+            this.p1 = new Vert(p1);
+            this.p2 = new Vert(p2);
             this.prev = this.next = this.pair = new E(this, this, this);
+            this.p1.e = this;
+            this.p2.e = this.pair;
             sync();
         }
 
@@ -429,7 +433,7 @@ public class Mesh implements Iterable<Mesh.T> {
         public E(E prev, Point p) {
             Vert p2;
             p2 = pointset.get(p);
-            if (p2 == null) p2 = new Vert(p, this);
+            if (p2 == null) p2 = new Vert(p);
             this.p1 = prev.p2;
             this.p2 = p2;
             this.prev = prev;
@@ -444,6 +448,7 @@ public class Mesh implements Iterable<Mesh.T> {
                 this.prev.next = this;
                 this.pair = new E(q, this, z);
             }
+            if (p2.e==null) p2.e = this.pair;
             sync();
         }
 
@@ -532,10 +537,6 @@ public class Mesh implements Iterable<Mesh.T> {
         }
     }
 
-    private Vert register(Point p) {
-        Vert v = pointset.get(p);
-        return v==null ? new Vert(p) : v;
-    }
     public E makeE(Point p1, Point p2) {
         Vert v1 = pointset.get(p1);
         Vert v2 = pointset.get(p2);