# circle2

2d circle implementation

## Stats

StarsIssuesVersionUpdatedCreatedSize
circle2
521.1.18 years ago10 years ago

## install

``npm install circle2``

## use

Where `origin` adheres to the following form:
`[0, 1]` `{ x: 0, y: 1}`
and `radius` is a number
Note: the arguments to the `Circle` function are optional. If none are passed `circle.position` will be `0, 0` and `circle.radius` will be `1`
You can also pass in a 3 points and have the circle computed from them:
``````var circle = Circle([
[0, 0],
[10, 0],
[0, 10]
])

console.log(circle.position); // { x: 0, y: 0 }``````

or an 3-item array of `Vec2`
``````var circle = Circle([
Vec2(0, 0),
Vec2(10, 0),
Vec2(0, 10)
])

console.log(circle.position); // { x: 0, y: 0 }``````

Note: changing the passed `Vec2`s will change the circle

### Instance Methods

Get/Set the radius of the circle
containsPoint(point)
Where `point` looks like one of the following:
`[0, 1]` `{ x: 0, y: 1 }` `new Vec2(0, 1)`
This function will return `true` if the passed point is inside or right on the boundary of the circle.
``````var Circle = require('circle2');

var c = Circle()

console.log(c.contains([10, 0])) // false

console.log(c.contains([10, 0])); // true``````

contains(thing)
Where `thing` meets the following criteria:
has `.position` and `.radius()` - circle has a function `.points()` or array `.points` - polygon has `.x1`, `.y1`, `.x2`, and `.y2` - rectangle has `.x`, `.y`, `.w`, and `.h` - rectangle has `.x`, `.y`, `.width`, and `.height` - rectangle
This method will return `true` if the passed `thing` is completely inside, and false otherwise.
``````var Circle = require('circle2');

var center = [0, 0];

var c = new Circle(center, 10)
var c2 = new Circle(center, 5)

console.log(c.contains(c2)); // true``````

Note: if the points of `thing` are on the circumference of the circle, this method will return `true`
change(fn)
This is a method that you want to have called any time the circle changes. Either in `radius` or `position`
``````var c = new Circle();

// do stuff. c === circle
});

ignore(fn)
Takes an optional `fn` parameter which if passed will remove the specified listener.
If no `fn` is passed, all the listeners will be removed.
notify()
Force listeners to be called.
area()
Returns the area `PI * r^2`
circumference()
Returns the circumference `PI * r*2`
intersectCircle(circle)
Performs an intersection between this circle and the incoming. Results are as follows:
`false` - no intersection or one circle is contained in the other `[]` - same circles `[Vec2]` - single intersection `[Vec2, Vec2]` - two intersection points
toSegments(segments)
Convert this circle into a series of points representing the outline of this circle