checkpoint
[anneal.git] / src / edu / berkeley / qfat / Mesh.java
index be699dd..8f3e6ab 100644 (file)
@@ -118,8 +118,8 @@ public class Mesh implements Iterable<Mesh.T> {
         /** the total error quadric (contributions from all vertices in other mesh for which this is nearest) */
         Matrix quadric = Matrix.ZERO;
 
-        Vertex bound_to = this;
         Matrix binding = Matrix.ONE;
+        Vertex bound_to = this;
         float oldscore = 0;
         boolean quadricStale = false;
 
@@ -298,8 +298,6 @@ public class Mesh implements Iterable<Mesh.T> {
         public E getFreeIncident() {
             E ret = getFreeIncident(e, e);
             if (ret != null) return ret;
-            ret = getFreeIncident(e.pair.next, e.pair.next);
-            if (ret != null) return ret;
             for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next)
                 System.out.println(e + " " + e.t);
             throw new Error("unable to find free incident to " + this);
@@ -332,11 +330,9 @@ public class Mesh implements Iterable<Mesh.T> {
         }
 
         public boolean isBoundTo(Vertex p) {
-            Vertex px = p;
-            do {
-                if (px==this) return true;
-                px = px.bound_to;
-            } while(px != p);
+            for(Vertex px = p; px!=null; px=(px.bound_to==p?null:px.bound_to))
+                if (px==this)
+                    return true;
             return false;
         }
         public void unbind() { bound_to = this; binding = Matrix.ONE; }