Git Product home page Git Product logo

polygon.js's Introduction

polygon.js

Install

nodejs

npm install polygon

Usage

Create a new polygon:

var p = new Polygon([
  Vec2(0, 0),
  Vec2(10, 0),
  Vec2(0, 10)
]);

You can pass an array of Vec2s, arrays [x, y], or objects { x: 10, y: 20 }

Supported Methods

  • each(function(prev, current, next, idx) {})
  • point(idx) - returns the point at index idx. note: this will wrap in both directions
  • dedupe(returnNew) - ensure all of the points are unique
  • insert(vec2, index) - insert vec2 at the specified index
  • remove(vecOrIndex) - remove the specified vec2 or numeric index from this polygon
  • clean(returnNew) - removes contiguous points that are the same
  • winding() - returns the direction in which a polygon is wound (true === clockwise)
  • rewind(bool) - rewinds the polygon in the specified direction (true === clockwise)
  • area() - computes the area of the polygon
  • closestPointTo(vec2) - finds the closest point in this polygon to vec2
  • center() - returns a Vec2 at the center of the AABB
  • scale(amount, origin, returnNew) - scales this polygon around origin (default is this.center()) and will return a new polygon if requested with returnNew
  • containsPoint(vec2) - returns true if vec2 is inside the polygon
  • containsPolygon(poly) - returns true if poly is completely contained in this polygon
  • aabb() - returns an object {x:_, y:_, w:_, h:_} representing the axis-aligned bounding box of this polygyon
  • offset(amount) - performs an offset/buffering operation on this polygon and returns a new one
  • line(index) - return an array [startpoint, endpoint] representing the line at the specified index
  • lines(function(start, end, index) {}) - iterate over the lines in this polygon
  • selfIntersections - find self-intersections and return them as a new polygon
  • pruneSelfIntersections - remove self intersections from this polygon. returns an array of polygons
  • length - returns the number of points in this polygon
  • clone - return a new instance of this polygon
  • rotate(rads, vec2, returnNew) - rotate by origin vec2 (default this.center()) by radians rads and return a clone if returnNew is specified
  • translate(vec2, returnNew) - translate by vec2 and return a clone if returnNew is specified
  • equal(poly) - return true if this polygon has the same components and the incoming poly
  • contains(thing) - works with an array of vec2's, an object containing a .position and .radius, an object populated with x1,y1,x2,y2, an object populated with x,y,w,h, and an object populated with x,y,width,height. See the tests for more info
  • union(polygon) returns a new polygon representing the boolean union of this and the incoming polygon
  • cut(polygon) returns a new polygon representing the boolean cut of polygon from this
  • toArray() convert this polygon into an array of arrays ([[x, y]])

license

MIT

polygon.js's People

Contributors

tmpvar avatar cbupp avatar vargad avatar

Watchers

kobihcmomanyi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.