Development Class C#

using System;
namespace ComputationalGeometry.Shapes
{
    public static class MathUtility
    {
        /// 
        /// Tests if two line segments intersect or not.
        /// The orientation of each line to other line's endpoints is used to determine
        /// the intersection.
        /// 

        /// Line 1.
        /// Line 2.
        /// True if the lines intersect each other.
        public static bool DoLinesIntersect(Line2D line1, Line2D line2)
        {
            return CrossProduct(line1.InitialPoint, line1.TerminalPoint, line2.InitialPoint) !=
                   CrossProduct(line1.InitialPoint, line1.TerminalPoint, line2.TerminalPoint) ||
                   CrossProduct(line2.InitialPoint, line2.TerminalPoint, line1.InitialPoint) !=
                   CrossProduct(line2.InitialPoint, line2.TerminalPoint, line1.TerminalPoint);
        }
        /// 
        /// Finds the cross product of the 2 vectors created by the 3 vertices.
        /// Vector 1 = v1 -> v2, Vector 2 = v2 -> v3
        /// The vectors make a "right turn" if the sign of the cross product is negative.
        /// The vectors make a "left turn" if the sign of the cross product is positive.
        /// The vectors are colinear (on the same line) if the cross product is zero.
        /// 

        /// First point.
        /// Second point.
        /// Third point.
        /// Cross product of the two vectors.
        public static double CrossProduct(Point2D p1, Point2D p2, Point2D p3)
        {
            return (p2.X - p1.X) * (p3.Y - p1.Y) - (p3.X - p1.X) * (p2.Y - p1.Y);
        }
    }
}