Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (581)
Games in Android Showcase (162)
games submitted by our members
Games in WIP (632)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Quaternion rotations and gimble lock  (Read 1127 times)
0 Members and 1 Guest are viewing this topic.
Offline arthor

Junior Newbie

« Posted 2006-03-11 12:12:33 »

Hi, I've been trying to implement a camera class for a couple of weeks now ive finally got something thats mostly working using quaternions for rotation and vectors for movement, but I think im suffering from gimble lock. The more i turn to the side the less height i can acheive turning upwards. Im fairly certain the vector section is correct and is mostly independant from the rotation.

Heres my code for the rotation

public void updateCamera()
   Quat4f rotation = new Quat4f();
   AxisAngle4f axisAngleX = new AxisAngle4f(cameraX.x, cameraX.y, cameraX.z, (float)Math.toRadians(angleX));
   AxisAngle4f axisAngleY = new AxisAngle4f(cameraY.x, cameraY.y, cameraY.z, (float)Math.toRadians(angleY));
   Quat4f quatXRotation = new Quat4f();
   Quat4f quatYRotation = new Quat4f();
   rotation.mul(quatYRotation, quatXRotation);
   Matrix4f newViewMatrix = new Matrix4f();
   float[] rotationMatrixArray = new float[]
   newViewMatrix.m00, newViewMatrix.m01, newViewMatrix.m02, 0,
   newViewMatrix.m10, newViewMatrix.m11, newViewMatrix.m12, 0,
   newViewMatrix.m20, newViewMatrix.m21, newViewMatrix.m22, 0,
    0, 0, 0, 1

      glu.gluPerspective(60.0, 800/600, 2.0, 500.0f);
      gl.glTranslatef(cameraPosition.x, cameraPosition.y, cameraPosition.z);

Am i doing something completely wrong? Or do i need to approach this from a different angle.
Offline Gannin

Senior Newbie

« Reply #1 - Posted 2006-03-11 23:30:01 »

You would probably be better served by asking this question in one of the OpenGL forums here.
Offline Jeff

JGO Coder

Got any cats?

« Reply #2 - Posted 2006-03-12 01:11:34 »

AIUI the whoel point of Quaternions is that they *don't* suffer from gimble lock.

As this is a heavy 3D math question I would *defintiely* ask it in one of the 3D forums (JOGL or Java3D)

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline zero

Junior Devvie

« Reply #3 - Posted 2006-03-12 01:54:59 »

hey arthor,

what are the values for the vectors cameraX and cameraY? Simply, the axes <1,0,0>, <0,1,0>?
and do you change angleX/angleY on key strokes?

further, what is ment by 'The more i turn to the side the less height i can acheive turning upwards'?
Rotating around the y-axis, right?
Offline Mike Jacobs

Junior Devvie

« Reply #4 - Posted 2006-03-12 04:17:25 »

... the whoel point of Quaternions is that they *don't* suffer from gimble lock.

Jeff is right if the Quaternion is used to represent an orientation.  On the surface, it appears that the quaternions may be used to represent axis rotations.  I included an overview of Java 3D quanternions in this article that might prove useful (  The quaternions are covered in the section entitled 'Slicker than Euler' on page 3.


Special Effects for Java 3D games:
Offline arthor

Junior Newbie

« Reply #5 - Posted 2006-03-12 12:14:35 »

Thanks for the interest, as sugessted ive posted again in one of the 3d forums, JOGL to be specific, hopefully that is a better place for the question. Ive also answered some of the questions asked in the new post
Pages: [1]
  ignore  |  Print  
You cannot reply to this message, because it is very, very old.

MrMapcom (11 views)
2015-05-23 20:26:16

MrMapcom (17 views)
2015-05-23 20:23:34

Waterwolf (29 views)
2015-05-20 15:01:45

chrislo27 (35 views)
2015-05-20 03:42:21

BurntPizza (70 views)
2015-05-10 15:53:18

FrozenShade (55 views)
2015-05-07 09:11:21

TheLopais (217 views)
2015-05-06 13:36:48

TheLopais (202 views)
2015-05-06 13:35:14

TheLopais (206 views)
2015-05-06 13:33:39

TheLopais (226 views)
2015-05-06 13:32:48
List of Learning Resources
by SilverTiger
2015-05-05 10:20:32

How to: JGO Wiki
by Mac70
2015-02-17 20:56:16

2D Dynamic Lighting
by ThePixelPony
2015-01-01 20:25:42

How do I start Java Game Development?
by gouessej
2014-12-27 19:41:21

Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!