# Isovists

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-LhLR34brSTcWIdxY4IX%2F-LhLRmGmPjIjn_A4lQW2%2Fisovists-1.png?alt=media\&token=11b9da6b-6705-4a7b-b130-5ab476889800)

{% file src="https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-LhLR34brSTcWIdxY4IX%2F-LhLRqgv6hcZWJiRINwf%2Fisovists.zip?alt=media&token=17383bc6-c92d-4c37-b579-be9e4555c460" %}

```d
point1 = Point.ByCoordinates([10, 5, 10], [3, 0, -5]);
t5 = 25;
circle1 = Circle.ByCenterPointRadius(point1, t5);
t4 = [Rectangle.ByWidthLength(60, 30), Rectangle.ByWidthLength(10, 5).Translate(20, 10, 0), Rectangle.ByWidthLength(10, 5).Translate(20, -10, 0), Circle.ByCenterPointRadius(Point.ByCoordinates(-7, -10), 3), NurbsCurve.ByControlPoints(Point.ByCoordinates([-20, -18, 15, -25, 5], [-5, 10, 7, 5, -5]), 3, true)];
t6 = List.AddItemToEnd(circle1@L1<1>, t4);
t7 = (0..1..0.001);
point2 = Curve.PointAtParameter(circle1<1>, t7<2>);
vector1 = Vector.ByTwoPoints(point1, point2);
geometry1 = Point.Project(point1<1L>, t6@@L1<1L>, vector1<1L>);
t8 = List.Transpose(geometry1<1L>);
t9 = List.Flatten(t8@@L3<1L>, -1);
t10 = Geometry.DistanceTo(t9, point1);
t11 = List.SortByKey(t9@@L2<1L>, t10@L2<1L>);
t12 = Dictionary.ValueAtKey(t11, "sorted list");
t13 = Dictionary.ValueAtKey(t11, "sorted keys");
t14 = List.FirstItem(t12@@L2<1L>);
polyCurve1 = PolyCurve.ByPoints(t14, false);
surface1 = Surface.ByPatch(polyCurve1);
```

![](https://1430428134-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ld8QK19sjP1I9rhLouo%2F-LhLR34brSTcWIdxY4IX%2F-LhLR9QFs750F--Y4M3f%2Fisovist.png?alt=media\&token=826563ad-9a19-4948-bd78-7c37964339e2)
