From 0663e0593cddd90631fe5c82b160b80f8d4e8422 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 4 Dec 2007 21:15:24 -0800 Subject: [PATCH] checkpoint darcs-hash:20071205051524-5007d-8bff8a08b420960d6fad9c1f01d132ddb38a2c41.gz --- src/edu/berkeley/qfat/geom/PointSet.java | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/edu/berkeley/qfat/geom/PointSet.java 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]; + } +} -- 1.7.10.4