From fa493c7d6f06f51cd29354d02c69b7456609dd92 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 15 Dec 2007 18:03:15 -0800 Subject: [PATCH] checkpoint darcs-hash:20071216020315-5007d-43fbcfa77666e8e96389cbcb920fbdd8963c1088.gz --- src/edu/berkeley/qfat/Mesh.java | 52 ++++++++++++--------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index e4b5bf4..ff9819d 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -106,7 +106,7 @@ public class Mesh implements Iterable { // Vertexices ////////////////////////////////////////////////////////////////////////////// /** a vertex in the mesh */ - public final class Vertex extends HasPoint { + public final class Vertex extends HasPoint implements Visitor { public String toString() { return p.toString(); } public Point p; E e; // some edge *leaving* this point @@ -313,47 +313,27 @@ public class Mesh implements Iterable { e = e.pair.next; } while(e != this.e); + if (!ignorecollision && good) triangles.range(new Segment(oldp, this.p), this); - if (!ignorecollision && good) { - - triangles.range(new Segment(oldp, this.p), - new Visitor() { - public void visit(T t) { - if (!good) return; - E e = Vertex.this.e; - do { - 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); - } - }); - - /* - for(T t : Mesh.this) { - if (!good) break; - e = this.e; - do { - if (!t.has(e.p1) && !t.has(e.p2) && e.intersects(t)) { good = false; break; } - if (e.t != null) { - if (!e.t.has(t.e1().p1) && !e.t.has(t.e1().p2) && t.e1().intersects(e.t)) { good = false; break; } - if (!e.t.has(t.e2().p1) && !e.t.has(t.e2().p2) && t.e2().intersects(e.t)) { good = false; break; } - if (!e.t.has(t.e3().p1) && !e.t.has(t.e3().p2) && t.e3().intersects(e.t)) { good = false; break; } - } - e = e.pair.next; - } while(e != this.e); - } - */ - } reComputeErrorAround(); return good; } + + public void visit(T t) { + if (!good) return; + E e = Vertex.this.e; + do { + 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; public boolean move(Vec v) { -- 1.7.10.4