X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FPointSet.java;h=2733daf1297bcf4baa8efefc3c7506a553ce5228;hb=40b6b99bd4b0bd6041b8ab94a22201faab23ed90;hp=fe44993abf5e712fe2011f3f63b3fdd0c58c780f;hpb=0f9ce20a060db6537a47b549cbf24fd268699ac6;p=anneal.git diff --git a/src/edu/berkeley/qfat/geom/PointSet.java b/src/edu/berkeley/qfat/geom/PointSet.java index fe44993..2733daf 100644 --- a/src/edu/berkeley/qfat/geom/PointSet.java +++ b/src/edu/berkeley/qfat/geom/PointSet.java @@ -1,23 +1,20 @@ package edu.berkeley.qfat.geom; -import edu.wlu.cs.levy.CG.KDTree; import java.util.*; public class PointSet implements Iterable { - private final RTree rtree = new RTree(); + private RTree rtree = new RTree(); - private /*final*/ KDTree kd = new KDTree(3); - private final double[] doubles = new double[3]; + private HashMap exact = new HashMap(); public int size() { return exact.size(); } - private HashMap exact = new HashMap(); public Iterator iterator() { return exact.values().iterator(); } public void clear() { - kd = new KDTree(3); exact = new HashMap(); + rtree = new RTree(); } public V get(Point p) { @@ -25,12 +22,6 @@ public class PointSet implements Iterable { } public void rebuild() { - /* - HashMap old_exact = exact; - exact = new HashMap(); - kd = new KDTree(3); - for(V v : old_exact.values()) add(v); - */ } public void add(V v) { @@ -38,54 +29,21 @@ public class PointSet implements Iterable { if (x != null && x.equals(v)) return; if (x != null) throw new Error("duplicates!"); Point p = v.getPoint(); - /* - doubles[0] = p.x; - doubles[1] = p.y; - doubles[2] = p.z; - try { - kd.insert(doubles, v); - } catch (Exception e) { - throw new Error(e); - } - */ rtree.insert(v); exact.put(p, v); } public void remove(V v) { Point p = v.getPoint(); - /* - doubles[0] = p.x; - doubles[1] = p.y; - doubles[2] = p.z; - try { - kd.delete(doubles); - } catch (Exception e) { } - */ rtree.remove(v); exact.remove(p); } public V nearest(Point p) { if (exact.size()==0) return null; - /* - Object[] results; - try { - doubles[0] = p.x; - doubles[1] = p.y; - doubles[2] = p.z; - results = kd.nearest(doubles,1); - } catch (Exception e) { - throw new Error(e); - } - V kd_says = (V)results[0]; - */ - V rt_says = rtree.nearest(p); - //if (kd_says != rt_says) System.err.println("disagree: " + p + " " + kd_says + " " + rt_says); - return rt_says; + return rtree.nearest(p); } - public Vec diagonal() { float min_x = Float.MAX_VALUE; float min_y = Float.MAX_VALUE;