function bBoxCanBeOptimizedOverNativeGetBBox (angle, hasAMatrixTransform) {
  const angleModulo90 = angle % 90
  const closeTo90 = angleModulo90 < -89.99 || angleModulo90 > 89.99
  const closeTo0 = angleModulo90 > -0.001 && angleModulo90 < 0.001
  return hasAMatrixTransform || !(closeTo0 || closeTo90)
}
Can the bbox be optimized over the native getBBox? The optimized bbox is the same as the native getBBox when
the rotation angle is a multiple of 90 degrees and there are no complex transforms.
Getting an optimized bbox can be dramatically slower, so we want to make sure it's worth it.

The best example for this is a circle rotate 45 degrees. The circle doesn't get wider or taller when rotated
about it's center.

The standard, unoptimized technique gets the native bbox of the circle, rotates the box 45 degrees, uses
that width and height, and applies any transforms to get the final bbox. This means the calculated bbox
is much wider than the original circle. If the angle had been 0, 90, 180, etc. both techniques render the
same bbox.

The optimization is not needed if the rotation is a multiple 90 degrees. The default technique is to call
getBBox then apply the angle and any transforms.

@param {Float} angle - The rotation angle in degrees
@param {boolean} hasAMatrixTransform - True if there is a matrix transform
@returns {boolean} True if the bbox can be optimized.