Solved

Camera rotation using quaternions

Posted on 2003-11-10
3
2,251 Views
Last Modified: 2012-08-13
How do I specify the rotation of a camera using quaternions about an axis at a specified angle. I know how to rotate about individual axis, but what if I wanted the camera to rotate about all three i:e: u,v and n axis about the eye.
I am programming in C++ using OpenGL.

Thanks.
0
Comment
Question by:deol_bhaji
3 Comments
 
LVL 1

Accepted Solution

by:
jadecc earned 500 total points
ID: 9720089
Hi,

I wish I could claim that I completely understood quaternions. What I had to do was keep up with the values (in degrees) of the heading (u), pitch (v), and roll (n) of the camera.  Then I created a quaternion from each of these angles and used them to figure out the view and driection of the camera:


      //quaternions that represent rotation
      m_qHeading.CreateFromAxisAngle(0.0f, 1.0f, 0.0f, m_HeadingDegrees);
      m_qPitch.CreateFromAxisAngle(1.0f, 0.0f, 0.0f, m_PitchDegrees);
      m_qRoll.CreateFromAxisAngle(0.0f, 0.0f, 1.0f, m_RollDegrees);
      
      //combine pitch and heading and roll and put into quaternion q
      q = m_qPitch * m_qHeading * m_qRoll;
      q.CreateMatrix(Matrix);
      
      // set our new perspective
      glMultMatrixf(Matrix);
      
      //get the y coord for our direction from the pitch quaternion
      m_qPitch.CreateMatrix(Matrix);
      m_qDirection.y = Matrix[9];
      ypitch = Matrix[9];
            
      //combine heading and pitch rotations to get the x and z coords for our direction
      q = m_qHeading * m_qPitch;
      q.CreateMatrix(Matrix);
      m_qDirection.x = Matrix[8];
      m_qDirection.z = Matrix[10];      


For a better explanation than I can offer check this link: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=Quaternion_Camera_Class

I hope that helps you more than hinders you:-)
jadecc
0
 
LVL 11

Expert Comment

by:bcladd
ID: 9731945
deol_bhaji - Did jadecc answer your question? Do you need more or different information?

-bcl
0
 

Author Comment

by:deol_bhaji
ID: 9735994
Thank you Jadecc. The link you sent was quite helpful. I guess I need to study a bit more on quaternions first.
deol_bhaji.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
RTS - Should I pre-load all possible images? 2 67
Trigonometry for game star field help 1 119
Recording what a camera sees for future playback. 5 41
copyEndy  challenge 15 94
What is RenderMan: RenderMan is a not any particular piece of software. RenderMan is an industry standard, defining set of rules that any rendering software should use, to be RenderMan-compliant. Pixar's RenderMan is a flagship implementation of …
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question