JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java™ (public API).
ViewerPose.java
Go to the documentation of this file.
1/**
2 * Copyright 2014-2023 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28package com.jogamp.opengl.util.stereo;
29
30import com.jogamp.math.Quaternion;
31import com.jogamp.math.Vec3f;
32
33/**
34 * {@link #position} and {@link #orientation} of viewer.
35 */
36public final class ViewerPose {
37 /**
38 * position of viewer in meter.
39 * <p>
40 * Apply the following to resolve the actual eye position:
41 * <ul>
42 * <li>{@link EyeParameter#positionOffset positionOffset} for head.</li>
43 * <li>[{@link EyeParameter#distNoseToPupilX distNoseToPupilX}, {@link EyeParameter#distMiddleToPupilY distMiddleToPupilY}, {@link EyeParameter#eyeReliefZ eyeReliefZ}] for pupil</li>
44 * </ul>
45 * </p>
46 */
47 public final Vec3f position;
48
49 /** Orientation of viewer. */
50 public final Quaternion orientation;
51
52 public ViewerPose() {
53 this.position = new Vec3f();
54 this.orientation = new Quaternion();
55 }
56 public ViewerPose(final float[] position, final Quaternion orientation) {
57 this();
59 }
60
61 /** Set {@link #position} and {@link #orientation}. */
62 public final void set(final float[] position, final Quaternion orientation) {
63 System.arraycopy(position, 0, this.position, 0, 3);
64 this.orientation.set(orientation);
65 }
66 /** Set position and orientation of this instance. */
67 public final void setPosition(final float posX, final float posY, final float posZ) {
68 position.set( posX, posY, posZ );
69 }
70 /** Set position and orientation of this instance. */
71 public final void setPosition(final Vec3f pos) {
72 position.set( pos );
73 }
74 @Override
75 public final String toString() {
76 return "ViewerPose[pos["+position+"], "+orientation+"]";
77 }
78}
Quaternion implementation supporting Gimbal-Lock free rotations.
Definition: Quaternion.java:45
final Quaternion set(final Quaternion src)
Set all values of this quaternion using the given src.
3D Vector based upon three float components.
Definition: Vec3f.java:37
Vec3f set(final Vec3f o)
this = o, returns this.
Definition: Vec3f.java:79
position and orientation of viewer.
Definition: ViewerPose.java:36
final void setPosition(final Vec3f pos)
Set position and orientation of this instance.
Definition: ViewerPose.java:71
final Quaternion orientation
Orientation of viewer.
Definition: ViewerPose.java:50
ViewerPose(final float[] position, final Quaternion orientation)
Definition: ViewerPose.java:56
final Vec3f position
position of viewer in meter.
Definition: ViewerPose.java:47
final void setPosition(final float posX, final float posY, final float posZ)
Set position and orientation of this instance.
Definition: ViewerPose.java:67