VelocityEstimator.EstimateVelocityCoroutine C# (CSharp) Method

EstimateVelocityCoroutine() private method

private EstimateVelocityCoroutine ( ) : IEnumerator
return IEnumerator
	IEnumerator EstimateVelocityCoroutine()
	{
		sampleCount = 0;

		Vector3 previousPosition = transform.position;
		Quaternion previousRotation = transform.rotation;
		while ( true )
		{
			yield return new WaitForEndOfFrame();

			float velocityFactor = 1.0f / Time.deltaTime;
			float angularVelocityFactor = Mathf.Deg2Rad / Time.deltaTime;

			int v = sampleCount % velocitySamples.Length;
			int w = sampleCount % angularVelocitySamples.Length;
			sampleCount++;

			// Estimate linear velocity
			velocitySamples[v] = velocityFactor * ( transform.position - previousPosition );

			// Estimate angular velocity
			float angle;
			Vector3 axis;
			Quaternion deltaRotation = transform.rotation * Quaternion.Inverse( previousRotation );
			deltaRotation.ToAngleAxis( out angle, out axis );
			angularVelocitySamples[w] = angle * axis * angularVelocityFactor;

			previousPosition = transform.position;
			previousRotation = transform.rotation;
		}
	}
}