예제 #1
0
        static public bool IsIntersecting(this LineSegmentF2 item, LineF2 line)
        {
            float    distance;
            VectorF2 point;

            return(item.TryGetIntersection(line, out distance, out point));
        }
예제 #2
0
        static public bool TryGetIntersection(this LineSegmentF2 item, LineSegmentF2 line_segment, out float distance, out VectorF2 point)
        {
            if (item.TryGetIntersection(line_segment.GetLine(), out distance, out point))
            {
                if (line_segment.GetRectF2().Contains(point))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #3
0
        static public bool TryGetIntersectionPercent(this LineSegmentF2 item, LineSegmentF2 line_segment, out float percent, out VectorF2 point)
        {
            float distance;

            if (item.TryGetIntersection(line_segment, out distance, out point))
            {
                percent = distance / item.GetLength();

                return(true);
            }

            percent = 0.0f;
            return(false);
        }
예제 #4
0
        static public bool TrySplit(this LineSegmentF2 item, LineF2 line, out LineSegmentF2 line_segment1, out LineSegmentF2 line_segment2)
        {
            VectorF2 point;

            if (item.TryGetIntersection(line, out point))
            {
                line_segment1 = new LineSegmentF2(item.p1, point);
                line_segment2 = new LineSegmentF2(point, item.p2);

                return(true);
            }

            line_segment1 = default(LineSegmentF2);
            line_segment2 = default(LineSegmentF2);
            return(false);
        }
예제 #5
0
        static public bool TryGetIntersection(this LineSegmentF2 item, LineSegmentF2 line_segment, out VectorF2 point)
        {
            float distance;

            return(item.TryGetIntersection(line_segment, out distance, out point));
        }