checkpoint
[anneal.git] / src / edu / berkeley / qfat / Mesh.java
index 51b9249..fb99488 100644 (file)
@@ -113,17 +113,18 @@ public class Mesh implements Iterable<Mesh.T> {
         }
 
         public void recomputeFundamentalQuadric() {
-            if (!quadricStale && fundamentalQuadric != null) return;
-            quadricStale = false;
             unApplyQuadricToNeighbor();
-            Matrix m = Matrix.ZERO;
-            int count = 0;
-            for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) {
-                T t = e.t;
-                m = m.plus(t.norm().fundamentalQuadric(t.centroid()));
-                count++;
+            if (quadricStale || fundamentalQuadric==null) {
+                Matrix m = Matrix.ZERO;
+                int count = 0;
+                for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) {
+                    T t = e.t;
+                    m = m.plus(t.norm().fundamentalQuadric(t.centroid()));
+                    count++;
+                }
+                quadricStale = false;
+                fundamentalQuadric = m.times(1/(float)count);
             }
-            fundamentalQuadric = m.times(1/(float)count);
             applyQuadricToNeighbor();
         }