/// <summary>
 /// Continue the path with a new one
 /// </summary>
 /// <param name="path">The path to continue</param>
 /// <param name="end">Next point to follow</param>
 /// <param name="duration">Duration of the animation</param>
 /// <param name="delay">Starting delay</param>
 /// <param name="function">Animation controller function</param>
 /// <returns>An array of paths including the newly created one</returns>
 public static Path2D[] ContinueTo(this Path2D path, Float2D end, ulong duration, ulong delay,
                                   AnimationFunctions.Function function)
 {
     return(path.ToArray().ContinueTo(end, duration, delay, function));
 }
 /// <summary>
 /// Continue the last paths with a new one
 /// </summary>
 /// <param name="paths">Array of paths</param>
 /// <param name="end">Next point to follow</param>
 /// <param name="duration">Duration of the animation</param>
 /// <param name="delay">Starting delay</param>
 /// <param name="function">Animation controller function</param>
 /// <returns>An array of paths including the newly created one</returns>
 public static Path2D[] ContinueTo(this Path2D[] paths, Float2D end, ulong duration, ulong delay,
                                   AnimationFunctions.Function function)
 {
     return(paths.Concat(new[] { new Path2D(paths.Last().End, end, duration, delay, function) }).ToArray());
 }
 /// <summary>
 /// Continue the path with a new one
 /// </summary>
 /// <param name="path">The path to continue</param>
 /// <param name="end">Next point to follow</param>
 /// <param name="duration">Duration of the animation</param>
 /// <param name="delay">Starting delay</param>
 /// <returns>An array of paths including the newly created one</returns>
 public static Path2D[] ContinueTo(this Path2D path, Float2D end, ulong duration, ulong delay)
 {
     return(path.ToArray().ContinueTo(end, duration, delay));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Path2D" /> class.
 /// </summary>
 /// <param name="start">The starting point or location</param>
 /// <param name="end">The ending point or location</param>
 /// <param name="duration">The time in miliseconds that the animator must play this path</param>
 /// <exception cref="ArgumentOutOfRangeException">Duration is less than zero</exception>
 public Path2D(Float2D start, Float2D end, ulong duration)
     : this(
         new Path(start.X, end.X, duration),
         new Path(start.Y, end.Y, duration))
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Path2D" /> class.
 /// </summary>
 /// <param name="start">The starting point or location</param>
 /// <param name="end">The ending point or location</param>
 /// <param name="duration">The time in miliseconds that the animator must play this path</param>
 /// <param name="function">The animation function</param>
 /// <exception cref="ArgumentOutOfRangeException">Duration is less than zero</exception>
 public Path2D(Float2D start, Float2D end, ulong duration, AnimationFunctions.Function function)
     : this(
         new Path(start.X, end.X, duration, function),
         new Path(start.Y, end.Y, duration, function))
 {
 }
 /// <summary>
 /// Creates and returns a new instance of the <see cref="Float2D" /> class from this instance
 /// </summary>
 /// <param name="size">The object to create the <see cref="Float2D" /> instance from</param>
 /// <returns>The newly created <see cref="Float2D" /> instance</returns>
 public static Float2D ToFloat2D(this SizeF size)
 {
     return(Float2D.FromSize(size));
 }
 /// <summary>
 /// Creates and returns a new instance of the <see cref="Float2D" /> class from this instance
 /// </summary>
 /// <param name="point">The object to create the <see cref="Float2D" /> instance from</param>
 /// <returns>The newly created <see cref="Float2D" /> instance</returns>
 public static Float2D ToFloat2D(this PointF point)
 {
     return(Float2D.FromPoint(point));
 }