X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=fb994880da734591fb6fefa0ec560273087f4e1b;hp=51b9249829b5c4fdf23dfde13b3b13e5dba10d14;hb=6fe08d5c50c341f47ded8ce9acd670aad9362614;hpb=8190da98c29041324f9dcaa9bc86d0a8a3f77491 diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 51b9249..fb99488 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -113,17 +113,18 @@ public class Mesh implements Iterable { } public void recomputeFundamentalQuadric() { - if (!quadricStale && fundamentalQuadric != null) return; - quadricStale = false; unApplyQuadricToNeighbor(); - Matrix m = Matrix.ZERO; - int count = 0; - for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) { - T t = e.t; - m = m.plus(t.norm().fundamentalQuadric(t.centroid())); - count++; + if (quadricStale || fundamentalQuadric==null) { + Matrix m = Matrix.ZERO; + int count = 0; + for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) { + T t = e.t; + m = m.plus(t.norm().fundamentalQuadric(t.centroid())); + count++; + } + quadricStale = false; + fundamentalQuadric = m.times(1/(float)count); } - fundamentalQuadric = m.times(1/(float)count); applyQuadricToNeighbor(); }