public static final float EPSILON = (float)0.0001;
public static final Random random = new Random();
- private PointSet<Vert> pointset = new PointSet<Vert>();
- public int size() { return pointset.size(); }
- public Iterable<Vert> vertices() { return pointset; }
+ private PointSet<Vert> vertices = new PointSet<Vert>();
+
+ public int size() { return vertices.size(); }
+ public Iterable<Vert> vertices() { return vertices; }
public Iterable<E> edges() {
return
public Iterator<T> iterator() {
/*
- for(Vert v : pointset)
+ for(Vert v : vertices)
if (v.e != null && v.e.t != null)
return new FaceIterator(v);
return new FaceIterator();
public void transform(Matrix m) {
ArrayList<Vert> set = new ArrayList<Vert>();
- for (Vert v : pointset)
+ for (Vert v : vertices)
set.add(v);
for(Vert v : set) v.transform(m);
}
return (float)total;
}
- 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 void rebuild() { /*vertices.rebuild();*/ }
+ public Vec diagonal() { return vertices.diagonal(); }
+ public Point centroid() { return vertices.centroid(); }
+ public Vert nearest(Point p) { return vertices.nearest(p); }
public final class Vert extends HasPoint {
public String toString() { return p.toString(); }
private Vert(Point p) {
this.p = p;
- if (pointset.get(p) != null) throw new Error();
- pointset.add(this);
+ if (vertices.get(p) != null) throw new Error();
+ vertices.add(this);
}
private void glNormal(GL gl) {
unApplyQuadricToNeighbor();
Point oldp = this.p;
try {
- if (pointset.get(this.p)==null) throw new Error();
- pointset.remove(this);
+ if (vertices.get(this.p)==null) throw new Error();
+ vertices.remove(this);
removeTrianglesFromRTree();
float newx = m.a*p.x + m.b*p.y + m.c*p.z + m.d;
float newy = m.e*p.x + m.f*p.y + m.g*p.z + m.h;
float newz = m.i*p.x + m.j*p.y + m.k*p.z + m.l;
this.p = new Point(newx, newy, newz);
addTrianglesToRTree();
- pointset.add(this);
+ vertices.add(this);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public E getE(Point p2) {
- Vert v = pointset.get(p2);
+ Vert v = vertices.get(p2);
if (v==null) return null;
return getE(v);
}
/** creates an isolated edge out in the middle of space */
public E(Point p1, Point p2) {
- if (pointset.get(p1) != null) throw new Error();
- if (pointset.get(p2) != null) throw new Error();
+ if (vertices.get(p1) != null) throw new Error();
+ if (vertices.get(p2) != null) throw new Error();
this.p1 = new Vert(p1);
this.p2 = new Vert(p2);
this.prev = this.next = this.pair = new E(this, this, this);
/** adds a new half-edge from prev.p2 to p2 */
public E(E prev, Point p) {
Vert p2;
- p2 = pointset.get(p);
+ p2 = vertices.get(p);
if (p2 == null) p2 = new Vert(p);
this.p1 = prev.p2;
this.p2 = p2;
}
public E makeE(Point p1, Point p2) {
- Vert v1 = pointset.get(p1);
- Vert v2 = pointset.get(p2);
+ Vert v1 = vertices.get(p1);
+ Vert v2 = vertices.get(p2);
if (v1 != null && v2 != null) {
E e = v1.getE(v2);
if (e != null) return e;