X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=e530ad7fc01672141f2152de3530e339ecf64421;hb=22da29ec26d486c1d396bdbe4971994b17987504;hp=0a26699d8f7623ae87bb1a762a4016e24f24bca4;hpb=ef71dffc8c85bae1d65ca44cfaef8698f83ca1eb;p=anneal.git diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 0a26699..e530ad7 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -11,11 +11,11 @@ import edu.berkeley.qfat.geom.Point; public class Mesh implements Iterable { - private KDTree kd = new KDTree(3); - public static float EPSILON = (float)0.0001; public static Random random = new Random(); + private PointSet pointset = new PointSet(); + public Vert nearest(Point p) { return pointset.nearest(p); } private HashMap verts = new HashMap(); public Iterable edges() { @@ -81,7 +81,7 @@ public class Mesh implements Iterable { for(T t : this) for(Vert p : new Vert[] { t.v1(), t.v2(), t.v3() }) p.kdremove(); - kd = new KDTree(3); + pointset.clear(); for(T t : this) for(Vert p : new Vert[] { t.v1(), t.v2(), t.v3() }) p.kdinsert(); @@ -144,11 +144,6 @@ public class Mesh implements Iterable { return (float)total; } - public Vert nearest(Point p) { - Object[] results; - try { results = kd.nearest(new double[]{p.x,p.y,p.z},1); } catch (Exception e) { throw new Error(e); } - return (Vert)results[0]; - } public class BindingGroup { public HashSet es = new HashSet(); @@ -181,12 +176,12 @@ public class Mesh implements Iterable { public void kdremove() { if (!inserted) return; inserted = false; - try { kd.delete(new double[]{p.x,p.y,p.z}); } catch (Exception e) { } + pointset.remove(this); } public void kdinsert() { if (inserted) return; inserted = true; - try { kd.insert(new double[]{p.x,p.y,p.z},this); } catch (Exception e) { throw new Error(e); } + pointset.add(this); } public float score() { return oldscore; }