examples/FBXLoader.js
function ( curve ) {

			for ( var i = 1; i < curve.values.length; i ++ ) {

				var initialValue = curve.values[ i - 1 ];
				var valuesSpan = curve.values[ i ] - initialValue;

				var absoluteSpan = Math.abs( valuesSpan );

				if ( absoluteSpan >= 180 ) {

					var numSubIntervals = absoluteSpan / 180;

					var step = valuesSpan / numSubIntervals;
					var nextValue = initialValue + step;

					var initialTime = curve.times[ i - 1 ];
					var timeSpan = curve.times[ i ] - initialTime;
					var interval = timeSpan / numSubIntervals;
					var nextTime = initialTime + interval;

					var interpolatedTimes = [];
					var interpolatedValues = [];

					while ( nextTime < curve.times[ i ] ) {

						interpolatedTimes.push( nextTime );
						nextTime += interval;

						interpolatedValues.push( nextValue );
						nextValue += step;

					}

					curve.times = inject( curve.times, i, interpolatedTimes );
					curve.values = inject( curve.values, i, interpolatedValues );

				}

			}

		}
function ( curve ) {

			for ( var i = 1; i < curve.values.length; i ++ ) {

				var initialValue = curve.values[ i - 1 ];
				var valuesSpan = curve.values[ i ] - initialValue;

				var absoluteSpan = Math.abs( valuesSpan );

				if ( absoluteSpan >= 180 ) {

					var numSubIntervals = absoluteSpan / 180;

					var step = valuesSpan / numSubIntervals;
					var nextValue = initialValue + step;

					var initialTime = curve.times[ i - 1 ];
					var timeSpan = curve.times[ i ] - initialTime;
					var interval = timeSpan / numSubIntervals;
					var nextTime = initialTime + interval;

					var interpolatedTimes = [];
					var interpolatedValues = [];

					while ( nextTime < curve.times[ i ] ) {

						interpolatedTimes.push( nextTime );
						nextTime += interval;

						interpolatedValues.push( nextValue );
						nextValue += step;

					}

					curve.times = inject( curve.times, i, interpolatedTimes );
					curve.values = inject( curve.values, i, interpolatedValues );

				}

			}

		}
function ( curve ) { for ( var i = 1 ; i < curve . values . length ; i ++ ) { var initialValue = curve . values [ i - 1 ] ; var valuesSpan = curve . values [ i ] - initialValue ; var absoluteSpan = Math . abs ( valuesSpan ) ; if ( absoluteSpan >= 180 ) { var numSubIntervals = absoluteSpan / 180 ; var step = valuesSpan / numSubIntervals ; var nextValue = initialValue + step ; var initialTime = curve . times [ i - 1 ] ; var timeSpan = curve . times [ i ] - initialTime ; var interval = timeSpan / numSubIntervals ; var nextTime = initialTime + interval ; var interpolatedTimes = [ ] ; var interpolatedValues = [ ] ; while ( nextTime < curve . times [ i ] ) { interpolatedTimes . push ( nextTime ) ; nextTime += interval ; interpolatedValues . push ( nextValue ) ; nextValue += step ; } curve . times = inject ( curve . times , i , interpolatedTimes ) ; curve . values = inject ( curve . values , i , interpolatedValues ) ; } } }
Rotations are defined as Euler angles which can have values  of any size These will be converted to quaternions which don't support values greater than PI, so we'll interpolate large rotations
Rotations are defined as Euler angles which can have values of any size These will be converted to quaternions which don t support values greater than PI so we ll interpolate large rotations