Source: Map/unionRectangles.js

'use strict';

/*global require*/
var defined = require('terriajs-cesium/Source/Core/defined');
var DeveloperError = require('terriajs-cesium/Source/Core/DeveloperError');
var Rectangle = require('terriajs-cesium/Source/Core/Rectangle');

/**
 * Computes the union of two rectangles.  This function is not 180-meridian safe.
 * @param {Rectangle} first The first rectangle to union.
 * @param {Rectangle} second The second rectangle to union.
 * @param {Rectangle} [result] The existing {@link Rectangle} to which to copy the result instead of creating and returning a new instance.
 * @return {Rectangle} The union of the two rectangles.
 */
var unionRectangles = function(first, second, result) {
    if (!defined(first)) {
        throw new DeveloperError('first is required');
    }
    if (!defined(second)) {
        throw new DeveloperError('second is required');
    }

    var west = Math.min(first.west, second.west);
    var south = Math.min(first.south, second.south);
    var east = Math.max(first.east, second.east);
    var north = Math.max(first.north, second.north);

    if (!defined(result)) {
        result = new Rectangle(west, south, east, north);
    } else {
        result.west = west;
        result.south = south;
        result.east = east;
        result.north = north;
    }

    return result;
};

module.exports = unionRectangles;