home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / graphics / 8805 < prev    next >
Encoding:
Internet Message Format  |  1992-08-13  |  1.8 KB

  1. Path: sparky!uunet!olivea!news.bbn.com!usc!sdd.hp.com!uakari.primate.wisc.edu!zazen!daffy!uwvax!meteor!brianp
  2. From: brianp@meteor.wisc.edu (Brian Paul)
  3. Newsgroups: comp.graphics
  4. Subject: Quaternion questions
  5. Message-ID: <1992Aug13.201513.9123@meteor.wisc.edu>
  6. Date: 13 Aug 92 20:15:13 GMT
  7. Organization: University of Wisconsin, Meteorology and Space Science
  8. Lines: 45
  9.  
  10.  
  11. I'm trying to implement a rigid body simulation with the notes from
  12. my SIGGRAPH '92 course "An Introduction to Physically Based Modeling".
  13. I am using quaternions to represent object orientations and have a few
  14. questions:
  15.  
  16. Suppose I implement quaternions as a 4-element vector q[4] where:
  17.    q[0] = i axis
  18.    q[1] = j axis
  19.    q[2] = k axis
  20.    q[3] = rotation value
  21.  
  22. Is this the correct way to normalize a quaternion to unit length?
  23.    double mag = sqrt( q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3] );
  24.    q[0] /= mag;
  25.    q[1] /= mag;
  26.    q[2] /= mag;
  27.    q[3] /= mag;
  28.  
  29.  
  30. How does one scale a quaternion?  In Baraff's notes on the bottom of
  31. page H23 there is the C++ expression:
  32.    quaternion qdot = .5 * (rb->omega * rb->q);
  33.  
  34. where rb->omega and rb->q are quaternions.  If p is the product of
  35. the two quaternions then is  .5 * p  correctly computed by:
  36.  
  37.   p[0] *= 0.5;
  38.   p[1] *= 0.5;
  39.   p[2] *= 0.5;
  40.   p[3] *= 0.5;
  41.  
  42. But if p was of unit length before, it won't be after this operation.
  43. Therefore, won't the quaternion deviate from being a pure rotation since
  44. it no longer has unit length?
  45.  
  46. The reason I have these questions is that I'm seeing some "drift" rotation
  47. when doing a "pure" Y-axis rotation.  I've tried re-normalizing the
  48. quaternions at various stages and tried variations on the quaternion
  49. scale method without success.  I have the Shoemake articles referenced by
  50. Baraff but I haven't found answers there either.
  51.  
  52. Thanks
  53.  
  54. -Brian Paul
  55.