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); }
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); }