checkpoint
[anneal.git] / src / edu / berkeley / qfat / geom / Point.java
index 2de47a6..a4bc276 100644 (file)
@@ -3,7 +3,7 @@ import javax.media.opengl.*;
 import javax.media.opengl.glu.*;
 
 /** point in 3-space; immutable */
-public final class Point implements HasBoundingBox {
+public final class Point extends HasPoint implements HasBoundingBox {
     public final float x, y, z;
     public Point(double x, double y, double z) { this((float)x, (float)y, (float)z); }
     public Point(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }
@@ -14,6 +14,7 @@ public final class Point implements HasBoundingBox {
 
     public Vec minus(Point p) { return new Vec(x-p.x, y-p.y, z-p.z); }
     public Point plus(Vec v) { return new Point(x+v.x, y+v.y, z+v.z); }
+    public Point midpoint(Point p) { return new Point((x+p.x)/2, (y+p.y)/2, (z+p.z)/2); }
 
     public void glVertex(GL gl) { gl.glVertex3f(x, y, z); }
 
@@ -22,25 +23,13 @@ public final class Point implements HasBoundingBox {
     public boolean equals(Object o) { return o!=null && (o instanceof Point) && ((Point)o).x==x && ((Point)o).y==y && ((Point)o).z==z; }
     public int hashCode() { return Float.floatToIntBits(x) ^ Float.floatToIntBits(y) ^ Float.floatToIntBits(z); }
 
+    public Point getPoint() { return this; }
+
     public float getMaxX() { return x; }
     public float getMinX() { return x; }
     public float getMaxY() { return y; }
     public float getMinY() { return y; }
     public float getMaxZ() { return z; }
     public float getMinZ() { return z; }
-
-    public Point glProject(GL gl) {
-        Point p = this;
-        int viewport[] = new int[4];
-        double mvmatrix[] = new double[16];
-        double projmatrix[] = new double[16];
-        double wcoord[] = new double[4];
-        gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
-        gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
-        gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
-        GLU glu = new GLU();
-        glu.gluProject(p.x, p.y, p.z, mvmatrix, 0, projmatrix, 0, viewport, 0, wcoord, 0);
-        return new Point(wcoord[0], wcoord[1], 0);
-    }
 }