CSharpGL.IBoundingBoxHelper.Expand C# (CSharp) Method

Expand() public static method

Expands the IBoundingBox's values.
public static Expand ( this boundingBox, float factor = 0.1f ) : BoundingBox
boundingBox this
factor float 0 for no expanding.
return BoundingBox
        public static BoundingBox Expand(this IBoundingBox boundingBox, float factor = 0.1f)
        {
            if (boundingBox == null) { throw new ArgumentNullException("boundingBox"); }

            vec3 min = boundingBox.MinPosition;
            vec3 max = boundingBox.MaxPosition;

            if (boundingBox.MaxPosition.x < min.x) { min.x = boundingBox.MaxPosition.x; }
            if (boundingBox.MaxPosition.y < min.y) { min.y = boundingBox.MaxPosition.y; }
            if (boundingBox.MaxPosition.z < min.z) { min.z = boundingBox.MaxPosition.z; }

            if (max.x < boundingBox.MinPosition.x) { max.x = boundingBox.MinPosition.x; }
            if (max.y < boundingBox.MinPosition.y) { max.y = boundingBox.MinPosition.y; }
            if (max.z < boundingBox.MinPosition.z) { max.z = boundingBox.MinPosition.z; }

            vec3 vector = (max - min);
            vector *= (1 + factor);
            vec3 newMax = min + vector;
            vec3 newMin = max - vector;

            return new BoundingBox(newMin, newMax);
        }