示例#1
0
        internal static Dictionary <IPolygon, bool> GetVisibilityPolygons(IPoint observerPoint, Dictionary <IPointCollection, bool> pointCollections)
        {
            var visibilityPolygons = new Dictionary <IPolygon, bool>();

            foreach (var points in pointCollections)
            {
                var polylines = new List <IPolyline>();

                if (points.Value)
                {
                    polylines.Add(EsriTools.Create3DPolylineFromPoints(observerPoint, points.Key.Point[0]));
                    for (int i = 0; i < points.Key.PointCount - 1; i++)
                    {
                        polylines.Add(EsriTools.Create3DPolylineFromPoints(points.Key.Point[i], points.Key.Point[i + 1]));
                    }
                    polylines.Add(EsriTools.Create3DPolylineFromPoints(observerPoint, points.Key.Point[points.Key.PointCount - 1]));
                }
                else
                {
                    for (int i = 0; i < points.Key.PointCount - 1; i++)
                    {
                        polylines.Add(EsriTools.Create3DPolylineFromPoints(points.Key.Point[i], points.Key.Point[i + 1]));
                    }
                }

                visibilityPolygons.Add(EsriTools.GetVisilityPolygon(polylines), points.Value);
            }

            return(visibilityPolygons);
        }
示例#2
0
        internal static Dictionary <IPolyline, bool> GetPolylinesSegments(Dictionary <IPointCollection, bool> segments)
        {
            if (segments == null)
            {
                return(null);
            }

            var polylines = new Dictionary <IPolyline, bool>();

            foreach (var segment in segments)
            {
                polylines.Add(EsriTools.Create3DPolylineFromPoints(segment.Key), segment.Value);
            }

            return(polylines);
        }