X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FPoint.java;h=2de47a6d70dcca8e0bf56589802901a0ab809115;hp=61fa603bdb88af052bb13bb69cc0491585e4d800;hb=2d6bccf0ca59bca01f2a9942e90c7ddb9399ed44;hpb=fe5601878bcdd906f4b58aa204af45272bf21c61 diff --git a/src/edu/berkeley/qfat/geom/Point.java b/src/edu/berkeley/qfat/geom/Point.java index 61fa603..2de47a6 100644 --- a/src/edu/berkeley/qfat/geom/Point.java +++ b/src/edu/berkeley/qfat/geom/Point.java @@ -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); + } }