public static Dictionary <string, object> FromOrigin( DSGeom.Point origin, List <DSGeom.Point> points, List <DSGeom.Polygon> boundary, [DefaultArgument("[]")] List <DSGeom.Polygon> obstacles) { DSGeom.Polygon isovist = IsovistPolygon(boundary, obstacles, origin); GTGeom.Polygon gPol = GTGeom.Polygon.ByVertices(isovist.Points.Select(p => GTGeom.Vertex.ByCoordinates(p.X, p.Y, p.Z)).ToList()); List <DSGeom.Point> visPoints = new List <DSGeom.Point>(); double totalPoints = points.Count; double visibilityAmount = 0; foreach (DSGeom.Point point in points) { GTGeom.Vertex vertex = GTGeom.Vertex.ByCoordinates(point.X, point.Y, point.Z); if (gPol.ContainsVertex(vertex)) { ++visibilityAmount; visPoints.Add(point); } } isovist.Dispose(); return(new Dictionary <string, object>() { { scoreOutputPort, (1 / totalPoints) * visibilityAmount }, { geometryOutputPort, visPoints } }); }
protected override void DisposeDisplayable() { //We need to call Dispose on display polygon so that this polygon's //display is disposed. if (null != mDisplayPolygon) { mDisplayPolygon.Dispose(); } base.DisposeDisplayable(); }