protected BasePolygonRegion(IReadOnlyList <Side> shape, OABR oabr) { Contract.Requires(shape != null); Contract.Requires(shape.Count >= 3); _shape = shape; _bounds = BoundingRectangle.CreateFromPoints(Points); _oabr = oabr; Area = Points.Area(); OabrAreaError = _oabr.Area - Area; }