checkpoint
[anneal.git] / src / edu / berkeley / qfat / Mesh.java
index 993f5e1..8592d8a 100644 (file)
@@ -37,7 +37,7 @@ public class Mesh implements Iterable<Mesh.T> {
     }
 
     public Iterator<T> iterator() {
-        for(Vert v : verts.values())
+        for(Vert v : pointset)
             if (v.e != null && v.e.t != null)
                 return new FaceIterator(v);
         return new FaceIterator();
@@ -92,47 +92,13 @@ public class Mesh implements Iterable<Mesh.T> {
 
     public void transform(Matrix m) {
         ArrayList<Vert> set = new ArrayList<Vert>();
-        set.addAll(verts.values());
+        for (Vert v : pointset)
+            set.add(v);
         for(Vert v : set) v.transform(m);
     }
 
-    public Vec diagonal() {
-        float min_x = Float.MAX_VALUE;
-        float min_y = Float.MAX_VALUE;
-        float min_z = Float.MAX_VALUE;
-        float max_x = Float.MIN_VALUE;
-        float max_y = Float.MIN_VALUE;
-        float max_z = Float.MIN_VALUE;
-        for(Point p : verts.keySet()) {
-            if (p.x < min_x) min_x = p.x;
-            if (p.y < min_y) min_y = p.y;
-            if (p.z < min_z) min_z = p.z;
-            if (p.x > max_x) max_x = p.x;
-            if (p.y > max_y) max_y = p.y;
-            if (p.z > max_z) max_z = p.z;
-        }
-        return new Vec(max_x - min_x, max_y - min_y, max_z - min_z);
-    }
-
-    public Point centroid() {
-        float min_x = Float.MAX_VALUE;
-        float min_y = Float.MAX_VALUE;
-        float min_z = Float.MAX_VALUE;
-        float max_x = Float.MIN_VALUE;
-        float max_y = Float.MIN_VALUE;
-        float max_z = Float.MIN_VALUE;
-        for(Point p : verts.keySet()) {
-            if (p.x < min_x) min_x = p.x;
-            if (p.y < min_y) min_y = p.y;
-            if (p.z < min_z) min_z = p.z;
-            if (p.x > max_x) max_x = p.x;
-            if (p.y > max_y) max_y = p.y;
-            if (p.z > max_z) max_z = p.z;
-        }
-        return new Point((float)(max_x + min_x)/2,
-                     (float)(max_y + min_y)/2,
-                     (float)(max_z + min_z)/2);
-    }
+    public Vec diagonal() { return pointset.diagonal(); }
+    public Point centroid() { return pointset.centroid(); }
 
     public float volume() {
         double total = 0;