checkpoint
[anneal.git] / src / edu / berkeley / qfat / geom / Point.java
index 61fa603..2de47a6 100644 (file)
@@ -1,5 +1,6 @@
 package edu.berkeley.qfat.geom;
 import javax.media.opengl.*;
+import javax.media.opengl.glu.*;
 
 /** point in 3-space; immutable */
 public final class Point implements HasBoundingBox {
@@ -27,5 +28,19 @@ public final class Point implements HasBoundingBox {
     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);
+    }
 }