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