Esempio n. 1
0
 /// <inheritdoc/>
 public bool Equals(Line2 other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(P.Equals(other.P) &&
            Direction.Equals(other.Direction));
 }
Esempio n. 2
0
        /// <summary>
        /// Determines the if a point <paramref name="p"/> intersects a line segment defined by <paramref name="a"/> and <paramref name="b"/>.
        /// </summary>
        /// <param name="a">An end point of a segment.</param>
        /// <param name="b">An end point of a segment.</param>
        /// <param name="p">A point.</param>
        /// <returns>True when a point intersects a line segment.</returns>
        [Pure] public static bool Intersects(Point2 a, Point2 b, Point2 p)
        {
            if (p.Equals(a) || p.Equals(b))
            {
                return(true);
            }
            Point2.Order(ref a, ref b);
            var d    = b - a;
            var v    = p - a;
            var aDot = d.Dot(v);

            return(
                (aDot <= 0)
                ? (0 == v.X && 0 == v.Y)
                : (
                    !(aDot >= d.GetMagnitudeSquared()) &&
                    (d.X * v.Y) - (d.Y * v.X) == 0.0
                    )
                );
        }
Esempio n. 3
0
 /// <summary>
 /// Indicates whether the current object is equal to another object of the same type.
 /// </summary>
 /// <returns>
 /// <c>true</c> if the current object is equal to the <paramref name="other"/> parameter; otherwise, <c>false</c>.
 /// </returns>
 /// <param name="other">An object to compare with this object.</param>
 public bool Equals(Ray2 other)
 {
     return(!ReferenceEquals(null, other) &&
            P.Equals(other.P) &&
            Direction.Equals(other.Direction));
 }
Esempio n. 4
0
 /// <inheritdoc/>
 public bool Equals(Segment2 other)
 {
     return(!ReferenceEquals(null, other) &&
            A.Equals(other.A) &&
            B.Equals(other.B));
 }