From 9a4c0a63db24cfe1787dbe798c2456271775fa88 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 15 Dec 2007 17:23:16 -0800 Subject: [PATCH] checkpoint darcs-hash:20071216012316-5007d-ff2bd4205b2f6dabed0dbbaffda37ac2a3d3e451.gz --- src/edu/berkeley/qfat/Mesh.java | 2 +- src/edu/berkeley/qfat/geom/PointSet.java | 6 +++--- src/edu/berkeley/qfat/geom/RTree.java | 17 ++++++++--------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 3544dba..b051816 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -122,7 +122,7 @@ public class Mesh implements Iterable { return (float)total; } - public void rebuildPointSet() { pointset.rebuild(); } + public void rebuildPointSet() { /*pointset.rebuild();*/ } public Vec diagonal() { return pointset.diagonal(); } public Point centroid() { return pointset.centroid(); } public Vert nearest(Point p) { return pointset.nearest(p); } diff --git a/src/edu/berkeley/qfat/geom/PointSet.java b/src/edu/berkeley/qfat/geom/PointSet.java index 5a70261..c1b4cf9 100644 --- a/src/edu/berkeley/qfat/geom/PointSet.java +++ b/src/edu/berkeley/qfat/geom/PointSet.java @@ -1,6 +1,7 @@ package edu.berkeley.qfat.geom; import java.util.*; +/** a set of points, plus many useful methods operating over the set */ public class PointSet implements Iterable { private RTree rtree = new RTree(); @@ -20,9 +21,6 @@ public class PointSet implements Iterable { return exact.get(p); } - public void rebuild() { - } - public void add(V v) { V x = get(v.getPoint()); if (x != null && x.equals(v)) return; @@ -43,6 +41,7 @@ public class PointSet implements Iterable { return rtree.nearest(p); } + // FEATURE: compute incrementally? public Vec diagonal() { float min_x = Float.MAX_VALUE; float min_y = Float.MAX_VALUE; @@ -62,6 +61,7 @@ public class PointSet implements Iterable { return new Vec(max_x - min_x, max_y - min_y, max_z - min_z); } + // FEATURE: compute incrementally? public Point centroid() { float min_x = Float.MAX_VALUE; float min_y = Float.MAX_VALUE; diff --git a/src/edu/berkeley/qfat/geom/RTree.java b/src/edu/berkeley/qfat/geom/RTree.java index cd1d217..b9078e1 100644 --- a/src/edu/berkeley/qfat/geom/RTree.java +++ b/src/edu/berkeley/qfat/geom/RTree.java @@ -9,9 +9,9 @@ public class RTree implements Iterable { private com.infomatiq.jsi.rtree.RTree rtree = new com.infomatiq.jsi.rtree.RTree(); - int lowid = 0; - HashMap idToV = new HashMap(); - HashMap vToId = new HashMap(); + private int lowid = 0; + private HashMap idToV = new HashMap(); + private HashMap vToId = new HashMap(); public Iterator iterator() { return vToId.keySet().iterator(); } @@ -34,20 +34,19 @@ public class RTree implements Iterable { int id = lowid++; idToV.put(id, v); vToId.put(v, id); - rtree.add(new com.infomatiq.jsi.Rectangle(v.getMinX(), v.getMinY(), v.getMinZ(), - v.getMaxX(), v.getMaxY(), v.getMaxZ()), - id); + rect.set(v.getMinX(), v.getMinY(), v.getMinZ(), v.getMaxX(), v.getMaxY(), v.getMaxZ()); + rtree.add(rect, id); } + private com.infomatiq.jsi.Rectangle rect = new com.infomatiq.jsi.Rectangle(0,0,0,0,0,0); public void remove(V v) { Integer idi = vToId.get(v); if (idi==null) return; int id = idi; idToV.remove(id); vToId.remove(v); - rtree.delete(new com.infomatiq.jsi.Rectangle(v.getMinX(), v.getMinY(), v.getMinZ(), - v.getMaxX(), v.getMaxY(), v.getMaxZ()), - id); + rect.set(v.getMinX(), v.getMinY(), v.getMinZ(), v.getMaxX(), v.getMaxY(), v.getMaxZ()); + rtree.delete(rect, id); } // gross... -- 1.7.10.4