From: adam Date: Sun, 16 Dec 2007 02:16:35 +0000 (-0800) Subject: checkpoint X-Git-Url: http://git.megacz.com/?p=anneal.git;a=commitdiff_plain;h=8be9cbf60143008c3fac8bacfe7e7d3f1afbf356 checkpoint darcs-hash:20071216021635-5007d-fe93c6cd1ae1026019862a7b0c84060dd49fd8a8.gz --- diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 18a9512..fe5baf7 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -149,14 +149,12 @@ public class Mesh implements Iterable { quadricStale = false; unApplyQuadricToNeighbor(); Matrix m = Matrix.ZERO; - E e = this.e; int count = 0; - do { + 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++; - e = e.pair.next; - } while(e != this.e); + } fundamentalQuadric = m.times(1/(float)count); applyQuadricToNeighbor(); } @@ -199,11 +197,8 @@ public class Mesh implements Iterable { public void reComputeErrorAround() { reComputeError(); if (nearest_in_other_mesh != null) nearest_in_other_mesh.reComputeError(); - E e = this.e; - do { + for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) e.p2.reComputeError(); - e = e.pair.next; - } while (e != this.e); } public void reComputeError() { unComputeError(); @@ -234,8 +229,7 @@ public class Mesh implements Iterable { int numaspects = 0; float aspects = 0; - E e = this.e; - do { + for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) { //double ang = Math.abs(e.crossAngle()); double ang = Math.abs(e.crossAngle()); if (ang > Math.PI) throw new Error(); @@ -249,9 +243,7 @@ public class Mesh implements Iterable { float minangle = (float)(Math.PI * 0.8); if (ang > minangle) oldscore += (ang - minangle); - - e = e.pair.next; - } while (e != this.e); + } if (numaspects > 0) oldscore += (aspects / numaspects); //System.out.println(oldscore); @@ -260,18 +252,12 @@ public class Mesh implements Iterable { } private void removeTrianglesFromRTree() { - E e = this.e; - do { + for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) if (e.t != null) e.t.removeFromRTree(); - e = e.pair.next; - } while(e != this.e); } private void addTrianglesToRTree() { - E e = this.e; - do { + for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) if (e.t != null) e.t.addToRTree(); - e = e.pair.next; - } while(e != this.e); } /** does NOT update bound pairs! */ @@ -309,16 +295,14 @@ public class Mesh implements Iterable { public void visit(T t) { if (!good) return; - E e = Vertex.this.e; - do { + for(E e = Vertex.this.e; e!=null; e=e.pair.next==Vertex.this.e?null:e.pair.next) { if (!t.has(e.p1) && !t.has(e.p2) && e.intersects(t)) { good = false; } if (e.t != null) { if (!e.t.has(t.e1().p1) && !e.t.has(t.e1().p2) && t.e1().intersects(e.t)) { good = false; } if (!e.t.has(t.e2().p1) && !e.t.has(t.e2().p2) && t.e2().intersects(e.t)) { good = false; } if (!e.t.has(t.e3().p1) && !e.t.has(t.e3().p2) && t.e3().intersects(e.t)) { good = false; } } - e = e.pair.next; - } while(e != Vertex.this.e); + } } private boolean good;