checkpoint
authoradam <adam@megacz.com>
Sun, 16 Dec 2007 01:23:16 +0000 (17:23 -0800)
committeradam <adam@megacz.com>
Sun, 16 Dec 2007 01:23:16 +0000 (17:23 -0800)
darcs-hash:20071216012316-5007d-ff2bd4205b2f6dabed0dbbaffda37ac2a3d3e451.gz

src/edu/berkeley/qfat/Mesh.java
src/edu/berkeley/qfat/geom/PointSet.java
src/edu/berkeley/qfat/geom/RTree.java

index 3544dba..b051816 100644 (file)
@@ -122,7 +122,7 @@ public class Mesh implements Iterable<Mesh.T> {
         return (float)total;
     }
 
         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); }
     public Vec diagonal() { return pointset.diagonal(); }
     public Point centroid() { return pointset.centroid(); }
     public Vert nearest(Point p) { return pointset.nearest(p); }
index 5a70261..c1b4cf9 100644 (file)
@@ -1,6 +1,7 @@
 package edu.berkeley.qfat.geom;
 import java.util.*;
 
 package edu.berkeley.qfat.geom;
 import java.util.*;
 
+/** a set of points, plus many useful methods operating over the set */
 public class PointSet<V extends HasPoint> implements Iterable<V> {
 
     private RTree<V> rtree = new RTree<V>();
 public class PointSet<V extends HasPoint> implements Iterable<V> {
 
     private RTree<V> rtree = new RTree<V>();
@@ -20,9 +21,6 @@ public class PointSet<V extends HasPoint> implements Iterable<V> {
         return exact.get(p);
     }
 
         return exact.get(p);
     }
 
-    public void rebuild() {
-    }
-
     public void add(V v) {
         V x = get(v.getPoint());
         if (x != null && x.equals(v)) return;
     public void add(V v) {
         V x = get(v.getPoint());
         if (x != null && x.equals(v)) return;
@@ -43,6 +41,7 @@ public class PointSet<V extends HasPoint> implements Iterable<V> {
         return rtree.nearest(p);
     }
 
         return rtree.nearest(p);
     }
 
+    // FEATURE: compute incrementally?
     public Vec diagonal() {
         float min_x = Float.MAX_VALUE;
         float min_y = Float.MAX_VALUE;
     public Vec diagonal() {
         float min_x = Float.MAX_VALUE;
         float min_y = Float.MAX_VALUE;
@@ -62,6 +61,7 @@ public class PointSet<V extends HasPoint> implements Iterable<V> {
         return new Vec(max_x - min_x, max_y - min_y, max_z - min_z);
     }
 
         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;
     public Point centroid() {
         float min_x = Float.MAX_VALUE;
         float min_y = Float.MAX_VALUE;
index cd1d217..b9078e1 100644 (file)
@@ -9,9 +9,9 @@ public class RTree<V extends HasBoundingBox> implements Iterable<V> {
     private com.infomatiq.jsi.rtree.RTree rtree =
         new com.infomatiq.jsi.rtree.RTree();
 
     private com.infomatiq.jsi.rtree.RTree rtree =
         new com.infomatiq.jsi.rtree.RTree();
 
-    int lowid = 0;
-    HashMap<Integer, V> idToV = new HashMap<Integer, V>();
-    HashMap<V, Integer> vToId = new HashMap<V, Integer>();
+    private int lowid = 0;
+    private HashMap<Integer, V> idToV = new HashMap<Integer, V>();
+    private HashMap<V, Integer> vToId = new HashMap<V, Integer>();
 
     public Iterator<V> iterator() { return vToId.keySet().iterator(); }
 
 
     public Iterator<V> iterator() { return vToId.keySet().iterator(); }
 
@@ -34,20 +34,19 @@ public class RTree<V extends HasBoundingBox> implements Iterable<V> {
         int id = lowid++;
         idToV.put(id, v);
         vToId.put(v, id);
         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);
     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...
     }
 
     // gross...