checkpoint
authoradam <adam@megacz.com>
Sun, 16 Dec 2007 02:48:48 +0000 (18:48 -0800)
committeradam <adam@megacz.com>
Sun, 16 Dec 2007 02:48:48 +0000 (18:48 -0800)
darcs-hash:20071216024848-5007d-58ff70a8f6504edb9737696ca94cb22932efb83d.gz

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

index 2fbd726..1a0239f 100644 (file)
@@ -399,9 +399,9 @@ public class Main extends MeshViewer {
                                "points_per_second=" +
                                (count*1000)/((double)(System.currentTimeMillis()-then)));
 
-            for(Mesh.Vertex p : tile.vertices()) p.recomputeFundamentalQuadric();
+            for(Mesh.Vertex p : goal.vertices()) p.recomputeFundamentalQuadricIfNeighborChanged();
             repaint();
-            for(Mesh.Vertex p : goal.vertices()) p.recomputeFundamentalQuadric();
+            for(Mesh.Vertex p : tile.vertices()) p.recomputeFundamentalQuadric();
             repaint();
 
             synchronized(safeTriangles) {
index fb99488..6db50dc 100644 (file)
@@ -112,6 +112,10 @@ public class Mesh implements Iterable<Mesh.T> {
             gl.glNormal3f(norm.x, norm.y, norm.z);
         }
 
+        public void recomputeFundamentalQuadricIfNeighborChanged() {
+            if (score_against.nearest(p) == nearest_in_other_mesh) return;
+            recomputeFundamentalQuadric();
+        }
         public void recomputeFundamentalQuadric() {
             unApplyQuadricToNeighbor();
             if (quadricStale || fundamentalQuadric==null) {