checkpoint
authoradam <adam@megacz.com>
Sun, 16 Dec 2007 02:46:43 +0000 (18:46 -0800)
committeradam <adam@megacz.com>
Sun, 16 Dec 2007 02:46:43 +0000 (18:46 -0800)
darcs-hash:20071216024643-5007d-10f7c1cae6f2a329c0ca35115817d9a107019b68.gz

src/edu/berkeley/qfat/Main.java
src/edu/berkeley/qfat/Mesh.java

index 0f4743b..2fbd726 100644 (file)
@@ -394,7 +394,6 @@ public class Main extends MeshViewer {
                 }
                 Thread.yield();
                 repaint();
-            for(Mesh.Vertex p : goal.vertices()) p.recomputeFundamentalQuadric();
             }
             System.out.println("temp="+temp + " ratio="+(Math.ceil(ratio*100)) + " " +
                                "points_per_second=" +
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();
         }