X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=fa6b80f536b2a8b0a427a3b4329cf3a964582800;hb=bebc4007cb48fe93ca03f97047d3445a881afe9e;hp=edd82d645d311711ac61211045379e1e082181b2;hpb=73ed19a2635750c10ed5ff71677f04ccfd3d0ef3;p=anneal.git diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index edd82d6..fa6b80f 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -354,8 +354,12 @@ public class Mesh implements Iterable { public void bindEdge(E e) { bind_to.add(e); } public void dobind() { bind_to.dobind(this); } - public Point shatter() { return shatter(midpoint(), null, null, true); } + public Point shatter() { return shatter(true); } + public Point shatter(boolean triangles) { return shatter(midpoint(), null, null, triangles); } public Point shatter(Point mid, BindingGroup bg1, BindingGroup bg2, boolean triangles) { + return shatter(mid, bg1, bg2, triangles, false); + } + public Point shatter(Point mid, BindingGroup bg1, BindingGroup bg2, boolean triangles, boolean leader) { if (shattered || destroyed) return mid; shattered = true; @@ -369,6 +373,10 @@ public class Mesh implements Iterable { BindingGroup old_bind_to = bind_to; bind_peers.shatter(bg1, bg2, triangles); old_bind_to.shatter(bg2.other(), bg1.other(), triangles); + if (!triangles) { + next.shatter(false); + prev.shatter(false); + } pair.shatter(); destroy(); @@ -377,6 +385,7 @@ public class Mesh implements Iterable { newT(r.p, mid, p2.p, null, old_colorclass); bg1.add(p1.getE(mid)); bg2.add(p2.getE(mid).pair); + if (leader) p1.getE(mid).shatter(); } return mid; }