From: adam Date: Wed, 5 Dec 2007 05:15:24 +0000 (-0800) Subject: checkpoint X-Git-Url: http://git.megacz.com/?p=anneal.git;a=commitdiff_plain;h=0663e0593cddd90631fe5c82b160b80f8d4e8422 checkpoint darcs-hash:20071205051524-5007d-8bff8a08b420960d6fad9c1f01d132ddb38a2c41.gz --- diff --git a/src/edu/berkeley/qfat/geom/PointSet.java b/src/edu/berkeley/qfat/geom/PointSet.java new file mode 100644 index 0000000..b69edb8 --- /dev/null +++ b/src/edu/berkeley/qfat/geom/PointSet.java @@ -0,0 +1,47 @@ +package edu.berkeley.qfat.geom; +import edu.wlu.cs.levy.CG.KDTree; + +public class PointSet { + + private /*final*/ KDTree kd = new KDTree(3); + private final double[] doubles = new double[3]; + + public void clear() { + kd = new KDTree(3); + } + + public void add(V v) { + 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); + } + } + + public void remove(HasPoint v) { remove(v.getPoint()); } + public void remove(Point p) { + doubles[0] = p.x; + doubles[1] = p.y; + doubles[2] = p.z; + try { + kd.delete(doubles); + } catch (Exception e) { } + } + + public V nearest(Point p) { + 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); + } + return (V)results[0]; + } +}