home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / graphics / 9302 < prev    next >
Encoding:
Text File  |  1992-08-31  |  1.9 KB  |  50 lines

  1. Newsgroups: comp.graphics
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!destroyer!ubc-cs!alberta!leung
  3. From: leung@cs.UAlberta.CA (Jian-Dong Liang)
  4. Subject: Re: 3d rotation about an arbitrary axis: how?
  5. Message-ID: <1992Aug31.174635.14572@cs.UAlberta.CA>
  6. Sender: news@cs.UAlberta.CA (News Administrator)
  7. Nntp-Posting-Host: newsarepta.cs.ualberta.ca
  8. Organization: University of Alberta
  9. References: <87331@netnews.upenn.edu>
  10. Date: Mon, 31 Aug 1992 17:46:35 GMT
  11. Lines: 37
  12.  
  13. In article <87331@netnews.upenn.edu> ledogar@eniac.seas.upenn.edu (Charles Ledogar) writes:
  14. >My visualization package now needs a flight-simulator-like viewpoint
  15. >control.  I have the viewpoint and viewdirection as 3d vectors in object 
  16. >space.  I need to rotate the viewdirection vector, for example, "down" wrt to
  17. >the current viewdirection.  I've figured out the vector for the axis
  18. >(say, (1,3,2) ) of rotation but I don't know the rotation matrix
  19. >for rotation about that non-basic axis.  I'd rather not have to convert
  20. >to eye-coordinate space.
  21. >
  22. >I vaguely remember some kind of matrix formula for which the familiar x-,
  23. >y-, and z-rotation matrices were but special cases.  Does such a 
  24. >formula exist?  Something about "Euler angles"...
  25. >
  26. >---Charlie Ledogar
  27. >ledogar@eniac.seas.upenn.edu
  28.  
  29. This can be done using quaternions.
  30.  
  31. A rotation of magnitude theta around an arbitrary axis (x, y, z)
  32. corresponds to a unit quaternion q=(q0, q1, q2, q3), where
  33.  
  34.         q0 = cos (theta/2),
  35.         q1 = x * sin (theta/2),
  36.         q2 = y * sin (theta/2),
  37.         q3 = z * sin (theta/2),
  38.  
  39. assuming (x, y, z) is a unit vector itself. A quaternion q of
  40. the above form corresponds to the following premultiplied rotation matrix:
  41.  
  42. | q0^2+q1^2-q2^2-q3^2   2(q3q0+q1q2)            2(q1q3-q0q2)            |
  43. | 2(q1q2-q0q3)          q0^2-q1^2+q2^2-q3^2     2(q1q0+q3q2)            |
  44. | 2(q1q3+q0q2)          2(q2q3-q0q1)            q0^2-q1^2-q2^2+q3^2)    |
  45.  
  46. Jiandong Liang
  47. leung@cs.ualberta.ca
  48.  
  49.  
  50.