checkpoint
authoradam <adam@megacz.com>
Wed, 5 Dec 2007 09:48:49 +0000 (01:48 -0800)
committeradam <adam@megacz.com>
Wed, 5 Dec 2007 09:48:49 +0000 (01:48 -0800)
darcs-hash:20071205094849-5007d-655c32e39b59a8b5ea3e42ebd48e23d5d483d7b2.gz

src/edu/berkeley/qfat/Mesh.java

index f9c9b94..2441057 100644 (file)
@@ -239,7 +239,6 @@ public class Mesh implements Iterable<Mesh.T> {
                 e = e.pair.next;
             } while(e != this.e);
 
-
             // FIXME: intersection test needed?
             return true;
         }
@@ -323,23 +322,22 @@ public class Mesh implements Iterable<Mesh.T> {
         public BindingGroup bind_others;
         public BindingGroup other() { return bind_others; }
         public BindingGroup(BindingGroup bind_others) { this.bind_others = bind_others; }
-        public BindingGroup() {
-            this.bind_others = new BindingGroup(this);
-        }
+        public BindingGroup() { this.bind_others = new BindingGroup(this); }
+        public BindingGroup(E e) { this(); set.add(e); }
         public void add(E e) {
             if (set.contains(e)) return;
             for (E epeer : e.bind_peers.set) {
                 epeer.bind_peers = this;
+                epeer.bind_to    = bind_others;
                 set.add(epeer);
             }
             for (E eother : e.bind_to.set) {
-                eother.bind_to = bind_others;
                 bind_others.add(eother);
             }
 
-            for(E ex : (!swap ? right : left)) {
-                if (e.prev.isBoundTo(ex.prev)) {
-                    System.out.println("hit!");
+            for(E eother : bind_others.set) {
+                if (e.next.bind_to.set.contains(eother.prev)) {
+                    e.next.next.bindEdge(eother.prev.prev);
                 }
             }
 
@@ -352,7 +350,7 @@ public class Mesh implements Iterable<Mesh.T> {
         }
         public void shatter(BindingGroup bg1, BindingGroup bg2) {
             for(E e : set) {
-                e.shatter(e.midpoint(), bg1, bg2, false);
+                e.shatter(e.midpoint(), bg1, bg2);
             }
         }
     }
@@ -365,7 +363,7 @@ public class Mesh implements Iterable<Mesh.T> {
         E prev;  // previous half-edge
         E next;  // next half-edge
         E pair;  // partner half-edge
-        public BindingGroup bind_peers  = new BindingGroup();
+        public BindingGroup bind_peers  = new BindingGroup(this);
         public BindingGroup bind_to     = bind_peers.other();
         boolean shattered = false;
 
@@ -373,8 +371,8 @@ public class Mesh implements Iterable<Mesh.T> {
         public void bindEdge(E e) { bind_to.add(e); }
         public void dobind() { bind_to.dobind(this); }
 
-        public Point shatter() { return shatter(midpoint(), null, null, false); }
-        public Point shatter(Point mid, BindingGroup bg1, BindingGroup bg2, boolean swap) {
+        public Point shatter() { return shatter(midpoint(), null, null); }
+        public Point shatter(Point mid, BindingGroup bg1, BindingGroup bg2) {
             if (shattered) return mid;
             shattered = true;
 
@@ -407,10 +405,12 @@ public class Mesh implements Iterable<Mesh.T> {
             prev.t = null;
             pair.next.t = null;
             pair.prev.t = null;
+            /*
             this.bind_to = null;
             pair.bind_to = null;
             this.bind_peers = null;
             pair.bind_peers = null;
+            */
             pair.prev.next = next;
             next.prev = pair.prev;
             prev.next = pair.next;