+
+ reComputeError();
+ }
+ public Matrix fundamentalQuadric() {
+ 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;
+ }