void IStateDoubleVariables.Set(double[] input, int offset, int length)
 {
     Array.Copy(input, offset, relativePosition, 0, 3);
     Array.Copy(input, 3 + offset, relativeVelocity, 0, 3);
     Array.Copy(input, 6 + offset, relativeQuaternion, 0, 4);
     Array.Copy(input, 10 + offset, omega, 0, 3);
     Copy6DPosition();
     Own.SetMatrix();
 }
 void IStarted.Start(double time)
 {
     Array.Copy(initialConditions, relativePosition, 3);
     Array.Copy(initialConditions, 3, relativeVelocity, 0, 3);
     Array.Copy(initialConditions, 6, relativeQuaternion, 0, 4);
     Array.Copy(initialConditions, 10, omega, 0, 3);
     Copy6DPosition();
     Own.SetMatrix();
     Update();
     SetAliases();
 }