checkpoint
[anneal.git] / src / edu / berkeley / qfat / geom / HasQuadric.java
index 825bda9..dda3930 100644 (file)
@@ -4,6 +4,7 @@ import javax.media.opengl.*;
 /** any object associated with a specific point in 3D space */
 public abstract class HasQuadric extends HasPoint {
 
+        public float oldscore = 0;
     public Matrix errorQuadric() { return quadric; }
     public boolean quadricStale = false;
     /** the nearest vertex in the "score_against" mesh */
@@ -31,7 +32,6 @@ public abstract class HasQuadric extends HasPoint {
                 recomputeFundamentalQuadric();
         }
     public abstract void recomputeFundamentalQuadric();
-    public abstract void unApplyQuadricToNeighbor();
     public abstract void applyQuadricToNeighbor();
     public abstract void reComputeErrorAround();
     public abstract void reComputeError();
@@ -42,4 +42,15 @@ public abstract class HasQuadric extends HasPoint {
             if (fundamentalQuadric == null) recomputeFundamentalQuadric();
             return fundamentalQuadric;
         }
+        public void unApplyQuadricToNeighbor() {
+            if (nearest_in_other_mesh == null) return;
+            if (fundamentalQuadric == null) return;
+            nearest_in_other_mesh.unComputeError();
+            nearest_in_other_mesh.quadric = nearest_in_other_mesh.quadric.minus(fundamentalQuadric);
+            nearest_in_other_mesh.quadric_count--;
+            if (nearest_in_other_mesh.quadric_count==0)
+                nearest_in_other_mesh.quadric = Matrix.ZERO;
+            nearest_in_other_mesh.computeError();
+            nearest_in_other_mesh = null;
+        }
 }