/// <summary>
        /// Clones the specified vector.
        /// </summary>
        /// <param name="threeDimensionalVector">The vector to clone.</param>
        public ThreeDimensionalVector(ThreeDimensionalVector threeDimensionalVector)
        {
            ArgumentValidator.AssertNotNull(threeDimensionalVector, "simple3DVector");

            if (threeDimensionalVector != null)
            {
                X = threeDimensionalVector.X;
                Y = threeDimensionalVector.Y;
                Z = threeDimensionalVector.Z;
            }
        }
        /// <summary>
        /// Clones the specified vector.
        /// </summary>
        /// <param name="threeDimensionalVector">The vector to clone.</param>
        public ThreeDimensionalVector(ThreeDimensionalVector threeDimensionalVector)
        {
            ArgumentValidator.AssertNotNull(threeDimensionalVector, "simple3DVector");

            if (threeDimensionalVector != null)
            {
                X = threeDimensionalVector.X;
                Y = threeDimensionalVector.Y;
                Z = threeDimensionalVector.Z;
            }
        }
        public EnhancedAccelerometerReading(
			DateTimeOffset timestamp, 
			ThreeDimensionalVector rawAcceleration, 
			ThreeDimensionalVector optimallyFilteredAcceleration, 
			ThreeDimensionalVector lowPassFilteredAcceleration, 
			ThreeDimensionalVector averageAcceleration)
        {
            Timestamp = timestamp;
            RawAcceleration = ArgumentValidator.AssertNotNull(rawAcceleration, "rawAcceleration");
            OptimallyFilteredAcceleration = ArgumentValidator.AssertNotNull(optimallyFilteredAcceleration, "optimallyFilteredAcceleration");
            LowPassFilteredAcceleration = ArgumentValidator.AssertNotNull(lowPassFilteredAcceleration, "lowPassFilteredAcceleration");
            AverageAcceleration = ArgumentValidator.AssertNotNull(averageAcceleration, "averageAcceleration");
        }
 public EnhancedAccelerometerReading(
     DateTimeOffset timestamp,
     ThreeDimensionalVector rawAcceleration,
     ThreeDimensionalVector optimallyFilteredAcceleration,
     ThreeDimensionalVector lowPassFilteredAcceleration,
     ThreeDimensionalVector averageAcceleration)
 {
     Timestamp       = timestamp;
     RawAcceleration = ArgumentValidator.AssertNotNull(rawAcceleration, "rawAcceleration");
     OptimallyFilteredAcceleration = ArgumentValidator.AssertNotNull(optimallyFilteredAcceleration, "optimallyFilteredAcceleration");
     LowPassFilteredAcceleration   = ArgumentValidator.AssertNotNull(lowPassFilteredAcceleration, "lowPassFilteredAcceleration");
     AverageAcceleration           = ArgumentValidator.AssertNotNull(averageAcceleration, "averageAcceleration");
 }