X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FHasQuadric.java;h=dda39306c42ee52e28f6a773d729cbe1bba1327f;hp=825bda9c9a0e9782ab6aa8bad8b48b52aacb1e42;hb=77be9651f3e4d3b99582ffdf2561608c50b6208c;hpb=485efa58c987b9a4b5155b36ae7c64eff4251142 diff --git a/src/edu/berkeley/qfat/geom/HasQuadric.java b/src/edu/berkeley/qfat/geom/HasQuadric.java index 825bda9..dda3930 100644 --- a/src/edu/berkeley/qfat/geom/HasQuadric.java +++ b/src/edu/berkeley/qfat/geom/HasQuadric.java @@ -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; + } }