summaryrefslogtreecommitdiffstats
path: root/src/gleem/ScreenToRayMapping.java
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2003-06-25 09:05:29 +0000
committerKenneth Russel <[email protected]>2003-06-25 09:05:29 +0000
commit2179980ed660ef66a9c064d153c5de7994d431ab (patch)
tree926fa0ccc31737ad9753a64bf0451dd818652d1b /src/gleem/ScreenToRayMapping.java
parent1a1ad3a33b2932187410bc8bb4bf44362a26c8b0 (diff)
Split up net.java.games.util; moved GLUT and BufferUtils into
net.java.games.jogl.util, and moved demo-specific utility classes into jogl-demos project under demos.util. Added nearly all JavaOne demos into jogl-demos project; rewrote where necessary to use ClassLoader.getResourceAsStream() instead of flat files, put into packages and added to Makefile. Added gleem to jogl-demos project. Added jogl.jar build rule. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@3 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/gleem/ScreenToRayMapping.java')
-rw-r--r--src/gleem/ScreenToRayMapping.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/gleem/ScreenToRayMapping.java b/src/gleem/ScreenToRayMapping.java
new file mode 100644
index 0000000..f77da8b
--- /dev/null
+++ b/src/gleem/ScreenToRayMapping.java
@@ -0,0 +1,73 @@
+/*
+ * gleem -- OpenGL Extremely Easy-To-Use Manipulators.
+ * Copyright (C) 1998-2003 Kenneth B. Russell ([email protected])
+ *
+ * Copying, distribution and use of this software in source and binary
+ * forms, with or without modification, is permitted provided that the
+ * following conditions are met:
+ *
+ * Distributions of source code must reproduce the copyright notice,
+ * this list of conditions and the following disclaimer in the source
+ * code header files; and Distributions of binary code must reproduce
+ * the copyright notice, this list of conditions and the following
+ * disclaimer in the documentation, Read me file, license file and/or
+ * other materials provided with the software distribution.
+ *
+ * The names of Sun Microsystems, Inc. ("Sun") and/or the copyright
+ * holder may not be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT A WARRANTY OF ANY
+ * KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
+ * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, NON-INTERFERENCE, ACCURACY OF
+ * INFORMATIONAL CONTENT OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. THE
+ * COPYRIGHT HOLDER, SUN AND SUN'S LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL THE
+ * COPYRIGHT HOLDER, SUN OR SUN'S LICENSORS BE LIABLE FOR ANY LOST
+ * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
+ * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
+ * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
+ * INABILITY TO USE THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT
+ * DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION,
+ * OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE COPYRIGHT
+ * HOLDER, SUN AND SUN'S LICENSORS DISCLAIM ANY EXPRESS OR IMPLIED
+ * WARRANTY OF FITNESS FOR SUCH USES.
+ */
+
+package gleem;
+
+import gleem.linalg.*;
+
+/** <P> This interface defines the mapping from normalized screen
+ coordinates to a 3D ray based on the given camera parameters. You
+ could subclass it to allow for more types of camera frusta, but
+ would also have to modify the CameraParameters structure. </P>
+
+ <P> The "normalized" screen coordinates must have the following
+ properties: </P>
+
+ <P>
+ upper left corner = (-1, 1) <BR>
+ lower left corner = (-1, -1) <BR>
+ lower right corner = (1, -1) <BR>
+ upper right corner = (1, 1) <BR>
+ center = (0, 0)
+ </P>
+
+ <P> The application is responsible for specifying the window size
+ to allow the ManipManager to compute these coordinates. </P>
+*/
+
+public interface ScreenToRayMapping {
+ /** Maps screen (x, y) to 3D point source and direction based on
+ given CameraParameters. screenCoords and params are incoming
+ arguments; raySource and rayDirection are mutated to contain the
+ result. */
+ public void mapScreenToRay(Vec2f screenCoords,
+ CameraParameters params,
+ Vec3f raySource,
+ Vec3f rayDirection);
+}