Exemple #1
0
        public static bool OneLineClose(LineSegment2D segment1, LineSegment2D segment2)
        {
            const double eps = 10.0;
            var          d1  = DistanceHelper.LineToPointDistance2D(segment1.P1, segment1.P2, segment2.P1);
            var          d2  = DistanceHelper.LineToPointDistance2D(segment1.P1, segment1.P2, segment2.P2);
            var          d3  = DistanceHelper.LineToPointDistance2D(segment2.P1, segment2.P2, segment1.P1);
            var          d4  = DistanceHelper.LineToPointDistance2D(segment2.P1, segment2.P2, segment1.P2);

            return(d1 < eps || d2 < eps || d3 < eps || d4 < eps);
        }
Exemple #2
0
        public static bool DistanceClose(LineSegment2D segment1, LineSegment2D segment2, bool checkIntersection = false)
        {
            const double eps = 35.0;

            var d1 = DistanceHelper.SegmentToPointDistance2D(segment1, segment2.P1);
            var d2 = DistanceHelper.SegmentToPointDistance2D(segment1, segment2.P2);
            var d3 = DistanceHelper.SegmentToPointDistance2D(segment2, segment1.P1);
            var d4 = DistanceHelper.SegmentToPointDistance2D(segment2, segment1.P2);

            if (d1 < eps || d2 < eps || d3 < eps || d4 < eps)
            {
                return(true);
            }
            if (checkIntersection && DistanceHelper.IsIntersect(segment1, segment2))
            {
                return(true);
            }
            return(false);
        }
Exemple #3
0
        private static HoughResult GroupSegments(LineSegment2D[] segments)
        {
            var solidSegments = new List <LineSegment2D>();
            var dashSegments  = new List <DashLineSegment2D>();
            var grouped       = GroupDirectionSerment(segments);

            foreach (var group in grouped)
            {
                var fullSegments = GroupCloseSegment(group.Item2);
                var allSegments  = GroupDashSegment(fullSegments);
                var dashSegment  = GroupCloseDashSegment(allSegments.Item2);
                solidSegments.AddRange(
                    allSegments.Item1.Where(l => DistanceHelper.Distance(l.P1, l.P2) > MinLineFullLenght));
                dashSegments.AddRange(
                    dashSegment.Where(l => DistanceHelper.Distance(l.AsSolid.P1, l.AsSolid.P2) > MinLineFullLenght));
            }
            return(new HoughResult {
                SolidLines = solidSegments.ToArray(), DashLines = dashSegments.ToArray()
            });
        }