public void unscore() {
if (nearest_in_other_mesh == null) return;
if (fundamentalQuadric == null) return;
+ nearest_in_other_mesh.unsc();
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.resc();
nearest_in_other_mesh = null;
}
if (nearest_in_other_mesh.e == null || nearest_in_other_mesh.norm().dot(norm()) < 0) {
nearest_in_other_mesh = null;
} else {
+ nearest_in_other_mesh.unsc();
nearest_in_other_mesh.quadric = nearest_in_other_mesh.quadric.plus(fundamentalQuadric());
nearest_in_other_mesh.quadric_count++;
+ nearest_in_other_mesh.resc();
}
}