Exemplo n.º 1
0
        public IList <IArea> ConvertSegmentToAreas(IEnumerable <Segment> segments, IntVector2 size)
        {
            if (!segments.Any())
            {
                return(new List <IArea>());
            }


            var areasDictinary = new Dictionary <Vector2, IList <Segment> >();

            foreach (var segment in segments)
            {
                addSite(areasDictinary, segment, segment.LeftSite);
                addSite(areasDictinary, segment, segment.RightSite);
            }

            return(areasDictinary.Select(ra =>
            {
                var areaSegments = ra.Value;
                var finalArea = new List <LineSegment>();
                foreach (var seg in areaSegments)
                {
                    finalArea.AddRange(_segmentDivider.Subdivide(seg.Start.Value, seg.End.Value));
                }

                var are = _areaFactory.instantiate(ra.Key, finalArea);
                return are;
            }
                                         ).ToList());
        }