public void can_normalize_sample() { var actual = new VectorD(new[] { 3.0, 4, 5, -6 }); var expected = actual.GetQuotient(actual.GetMagnitude()); actual.Normalize(); Assert.Equal(expected, actual); }
public void zero_vector_normalizes_to_zero() { var actual = new VectorD(4); var expected = new VectorD(4); actual.Normalize(); Assert.Equal(expected, actual); }
/// <summary> /// Retrieves the angle, expressed in radians, between the two specified vectors. /// </summary> /// <param name="vector1">The first vector to evaluate.</param> /// <param name="vector2">The second vector to evaluate.</param> /// <returns>The angle, in radians, between vector1 and vector2.</returns> public static double AngleBetween(VectorD vector1, VectorD vector2) { vector1.Normalize(); vector2.Normalize(); double angle = Math.Atan2(vector2.y, vector2.x) - Math.Atan2(vector1.y, vector1.x); if (angle > Math.PI) { angle -= Math.PI * 2.0; } else if (angle < -Math.PI) { angle += Math.PI * 2.0; } return(angle); }
/// <summary> /// Retrieves the angle, expressed in radians, between the two specified vectors. /// </summary> /// <param name="vector1">The first vector to evaluate.</param> /// <param name="vector2">The second vector to evaluate.</param> /// <returns>The angle, in radians, between vector1 and vector2.</returns> public static double AngleBetween(VectorD vector1, VectorD vector2) { vector1.Normalize(); vector2.Normalize(); double angle = Math.Atan2(vector2.y, vector2.x) - Math.Atan2(vector1.y, vector1.x); if (angle > Math.PI) { angle -= Math.PI * 2.0; } else if (angle < -Math.PI) { angle += Math.PI * 2.0; } return angle; }
public void NormalizeException() { VectorD v = new VectorD(11); v.Normalize(); }
public void Normalize() { VectorD v = new VectorD(new[] { 3.0, -1.0, 23.0, 0.4 }); v.Normalize(); Assert.IsTrue(v.IsNumericallyNormalized); }