Expands a bound returned by GetBound() so that it is guaranteed to
contain the bounds of any subregion whose bounds are computed using
this class. For example, consider a loop L that defines a square.
GetBound() ensures that if a point P is contained by this square, then
S2LatLng(P) is contained by the bound. But now consider a diamond
shaped loop S contained by L. It is possible that GetBound() returns a
*larger* bound for S than it does for L, due to rounding errors. This
method expands the bound for L so that it is guaranteed to contain the
bounds of any subregion S.
More precisely, if L is a loop that does not contain either pole, and S
is a loop such that L.Contains(S), then
Expands a bound returned by GetBound() so that it is guaranteed to contain the bounds of any subregion whose bounds are computed using this class. For example, consider a loop L that defines a square. GetBound() ensures that if a point P is contained by this square, then S2LatLng(P) is contained by the bound. But now consider a diamond shaped loop S contained by L. It is possible that GetBound() returns a *larger* bound for S than it does for L, due to rounding errors. This method expands the bound for L so that it is guaranteed to contain the bounds of any subregion S.
More precisely, if L is a loop that does not contain either pole, and S is a loop such that L.Contains(S), then
ExpandForSubregions(RectBound(L)).Contains(RectBound(S)).