From 9e6eb545b0735cf21d6804bc68bb16c58fc0da61 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 5 Dec 2007 01:19:51 -0800 Subject: [PATCH] checkpoint darcs-hash:20071205091951-5007d-2fe60c5d9ee894e17dc03cf171855493ec6c2356.gz --- src/edu/berkeley/qfat/Mesh.java | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 02188f2..0e59461 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -322,10 +322,17 @@ public class Mesh implements Iterable { private HashSet left = new HashSet(); private HashSet right = new HashSet(); public BindingGroup() { } - public BindingGroup(E e) { add(e, false); } - public void add(E e, boolean swap) { + public BindingGroup(E e) { add(null, e, false); } + public void add(E ethis, E e, boolean swap) { + if (ethis==null) { } + else if (right.contains(ethis)) swap = !swap; + else if (!left.contains(ethis)) throw new Error(); + if (e.bg != null) { - if (e.bg == this) return; /* fixme what if it is in the "other" set? */ + if (e.bg == this) { + if ((!swap ? right : left).contains(e)) throw new Error("double bind!"); + return; + } for(E ex : (!swap ? e.bg.left : e.bg.right)) { ex.bg = this; left.add(ex); @@ -339,9 +346,8 @@ public class Mesh implements Iterable { (!swap ? left : right).add(e); e.bg = this; } - for(E ex : (!swap ? right : left)) { - if (e.next.isBoundTo(ex.next)) { + if (e.prev.isBoundTo(ex.prev)) { System.out.println("hit!"); } } @@ -392,10 +398,7 @@ public class Mesh implements Iterable { public int compareTo(E e) { return e.length() > length() ? 1 : -1; } - - public void bindEdge(E e) { - bg.add(e, true); - } + public void bindEdge(E e) { bg.add(this, e, true); } public void dobind() { if (bg != null) bg.dobind(this); } public Point shatter() { return shatter(midpoint(), null, null, false); } @@ -415,8 +418,8 @@ public class Mesh implements Iterable { newT(r.p, p1.p, mid, null); newT(r.p, mid, p2.p, null); - (swap ? bg1 : bg2).add(p1.getE(mid), swap); - (swap ? bg2 : bg1).add(p2.getE(mid).pair, swap); + (swap ? bg1 : bg2).add(null, p1.getE(mid), swap); + (swap ? bg2 : bg1).add(null, p2.getE(mid).pair, swap); return mid; } -- 1.7.10.4