The class encapsulates 2D line and provides some tool methods related to lines.

The class provides some methods which are related to lines: angle between lines, distance to point, finding intersection point, etc.

Generally, the equation of the line is y = Slope * x + Intercept. However, when Slope is an Infinity, Intercept would normally be meaningless, and it would be impossible to distinguish the line x = 5 from the line x = -5. Therefore, if Slope is Double.PositiveInfinity or Double.NegativeInfinity, the line's equation is instead x = Intercept.

Sample usage:

// create a line Line line = Line.FromPoints( new DoublePoint( 0, 0 ), new DoublePoint( 3, 4 ) ); // check if it is vertical or horizontal if ( line.IsVertical || line.IsHorizontal ) { // ... } // get intersection point with another line DoublePoint intersection = line.GetIntersectionWith( Line.FromPoints( new DoublePoint( 3, 0 ), new DoublePoint( 0, 4 ) ) );
コード例 #1
0
        /// <summary>
        /// Calculate minimum angle between two lines measured in [0, 90] degrees range.
        /// </summary>
        ///
        /// <param name="a1">A point on the first line.</param>
        /// <param name="a2">Another point on the first line.</param>
        /// <param name="b1">A point on the second line.</param>
        /// <param name="b2">Another point on the second line.</param>
        ///
        /// <returns>Returns minimum angle between two lines.</returns>
        ///
        /// <remarks><para><note>It is preferred to use <see cref="Line.GetAngleBetweenLines"/> if it is required to calculate angle
        /// multiple times for one of the lines.</note></para></remarks>
        ///
        /// <exception cref="ArgumentException"><paramref name="a1"/> and <paramref name="a2"/> are the same,
        /// -OR- <paramref name="b1"/> and <paramref name="b2"/> are the same.</exception>
        ///
        public static float GetAngleBetweenLines(Point a1, Point a2, Point b1, Point b2)
        {
            var line1 = Line.FromPoints(a1, a2);

            return(line1.GetAngleBetweenLines(Line.FromPoints(b1, b2)));
        }
コード例 #2
0
ファイル: LineSegment.cs プロジェクト: unnown/botMap
 /// <summary>
 /// Initializes a new instance of the <see cref="LineSegment"/> class.
 /// </summary>
 ///
 /// <param name="start">Segment's start point.</param>
 /// <param name="end">Segment's end point.</param>
 ///
 /// <exception cref="ArgumentException">Thrown if the two points are the same.</exception>
 ///
 public LineSegment(Point start, Point end)
 {
     this.line  = Line.FromPoints(start, end);
     this.start = start;
     this.end   = end;
 }