Project

General

Profile

« Previous | Next » 

Revision c59fc52d

Added by Leszek Koltunski almost 5 years ago

Dynamics App: fix moving Quat Points
Library: remove negating the Quat Points in the DynamicQuat in order to always go the shortest route.

View differences:

src/main/java/org/distorted/library/type/DynamicQuat.java
27 27
* of Static4Ds.
28 28
* Here, the Points are assumed to be Quaternions - thus we do the Spherical Linear Interpolation, aka
29 29
* SLERP. Noise not supported (yet?).
30
*
31
* Only unit quaternions represent valid rotations in 3D - and interpolating through rotations is the
32
* most common use case for this class. No effort is done to normalize the Points though.
30 33
*/
31 34

  
32 35
public class DynamicQuat extends Dynamic implements Data4D
......
86 89
        vq.vw = cu.w;
87 90
    	
88 91
        vq.cosOmega = cu.x*ne.x + cu.y*ne.y + cu.z*ne.z + cu.w*ne.w;
89
      	
90
        if( vq.cosOmega<0 && n!=0 )  // do not invert the last quaternion even if we'd have to go the long way around!
91
          {
92
          vq.cosOmega = -vq.cosOmega;
93
          ne.x = -ne.x;
94
          ne.y = -ne.y;
95
          ne.z = -ne.z;
96
          ne.w = -ne.w;
97
          }
98
      	
99 92
        vq.sinOmega = (float)Math.sqrt(1-vq.cosOmega*vq.cosOmega);
100
        vq.omega = arcCos(vq.cosOmega);
93
        vq.omega    = arcCos(vq.cosOmega);
101 94
        }
102 95
      }
103 96
   
......
154 147
///////////////////////////////////////////////////////////////////////////////////////////////////
155 148
/**
156 149
 * Resets the location'th Point.
157
 * 
150
 *
158 151
 * @param location the index of the Point we are setting.
159 152
 * @param x New value of its first float.
160 153
 */

Also available in: Unified diff