public void TrimmedCellProfile() { var outer = new Polygon(new List <Vector3> { new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(10, 0, 10), new Vector3(0, 0, 10) }); var inner1 = new Polygon(new List <Vector3> { new Vector3(3, 0, 9), new Vector3(3, 0, 7), new Vector3(1, 0, 7), new Vector3(1, 0, 9) }); var inner2 = new Polygon(new List <Vector3> { new Vector3(9, 0, 3), new Vector3(9, 0, 1), new Vector3(7, 0, 1), new Vector3(7, 0, 3) }); var inner3 = new Polygon(new List <Vector3> { new Vector3(6, 0, 6), new Vector3(6, 0, 3), new Vector3(3, 0, 3), new Vector3(3, 0, 6) }); var polygons = new List <Polygon>(); polygons.Add(outer); polygons.Add(inner1); polygons.Add(inner2); polygons.Add(inner3); var grid = new Grid2d(polygons); var profiles = grid.GetTrimmedCellProfiles(); Assert.Single(profiles); var profile = profiles.FirstOrDefault(); Assert.Equal(3, profile.Voids.Count()); Assert.Equal(100, profile.Perimeter.Area()); Assert.Equal(4, profile.Voids[0].Area()); Assert.Equal(9, profile.Voids[1].Area()); Assert.Equal(4, profile.Voids[2].Area()); }