# Rectangles.js

Rectangles.js is a collection of functions to work with rectangles. The aim is to have a fast and correct library, which makes it easy to calculate the intersection of two rectangles, the area of a rectangle and so on.

Every rectangle is defined by two cartesian points `(x1, y1)`

on the top left corner and `(x2, y2)`

on the right bottom corner. You have to ensure that `x1 <= x2`

and `y1 <= y2`

. Otherwise you can use the `normalize()`

function to ensure correct behavior.

# Examples

`var rect = ;var A = x1: 20 y1: 20 x2: 100 y2: 100;var B = x1: 80 y1: 80 x2: 300 y2: 300;if rect console; // Intersection rectangle else console;`

# Functions

## intersect(a, b)

Determines if two rectangles intersect

## intersection(a, b)

Calculates the intersection rectangle of two rectangles. Rectangles have to intersect to work properly!

## normalize(a)

Normalizes a rectangle to ensure `x1 < x2`

and `y1 < y2`

.

## area(a)

Calculates the area of a rectangle

## height(a)

Calculates the height of a rectangle

## width(a)

Calculates the width of a rectangle

## perimater(a)

Calculates the perimeter of a rectangle

## center(a)

Calculates the center point of a rectangle

## insetBy(a)

Resizes the rectangle by a given value on the center

# Installation

Installing Rectangles.js is as easy as cloning this repo or use one of the following commands:

```
bower install rectangle
```

or

```
npm install rectangles
```

# Using Rectangles.js with the browser

# Using Rectangles.js with require.js

# Coding Style

As every library I publish, Rectangles.js is also built to be as small as possible after compressing it with Google Closure Compiler in advanced mode. Thus the coding style orientates a little on maxing-out the compression rate. Please make sure you keep this style if you plan to extend the library.

# Testing

If you plan to enhance the library, make sure you add test cases and all the previous tests are passing. You can test the library with

```
npm test
```

# Copyright and licensing

Copyright (c) 2016, Robert Eisele Dual licensed under the MIT or GPL Version 2 licenses.