UNPKG

collider2d

Version:

A 2D collision checker for modern JavaScript games.

214 lines (145 loc) 6.62 kB
## **Polygon** A polygon consists of a convex shape with any number of points (specified in a counter-clockwise order). | property | type | description | default | |---------- |--------------- |--------------------------------------------------------------------------------------------- |-------------- | | position | Vector | A vector representing the origin of the polygon (all other points are relative to this one). | vector(0, 0) | | points | Array<Vector> | An array of vectors representing the points of the polygon, in counter-clockwise order. | 0 | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); ``` ## **Getters** ### **position** Returns the position of the polygon. ### **points** Returns the points of the polygon. ### **calcPoints** Returns an array of vectors of the calculated points of the polygon. ### **offset** Returns a vector representing the offset of the polygon. ### **angle** Returns the angle of the polygon, in radians. ### **edges** Returns an array of vectors representing the edges of the polygon. ### **normals** Returns an array of vectors representing the normals of the polygon. ## **Methods** ### **setPoints** Set the points of the polygon. Any consecutive duplicate points will be combined. Note: The points are counter-clockwise *with respect to the coordinate system*. If you directly draw the points on a screen that has the origin at the top-left corner it will _appear_ visually that the points are being specified clockwise. This is just because of the inversion of the Y-axis when being displayed. This is called automatically when a polygon is initialized. | property | type | description | default | |---------- |--------------- |--------------------------------------------------------------------------------------------- |-------------- | | points | Array<Vector> | An array of vectors representing the points of the polygon, in counter-clockwise order. | | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); polygon.setPoints([ new Vector(0, 0), new Vector(80, 0), new Vector(80, 80), new Vector(0, 80) ); ``` ### **setAngle** Sets the current rotation angle of the polygon. | property | type | description | default | |---------- |--------------- |----------------------------------------------------------------------------------------- |-------------- | | angle | number | The current rotation angle, in radians. | | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); polygon.setAngle(45); ``` ### **setOffset** et the current offset to apply to the `points` before applying the `angle` rotation. | property | type | description | default | |---------- |--------------- |----------------------------------------------------------------------------------------- |-------------- | | offset | Vector | The vector representing the offset | | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); polygon.setOffset(new Vector(2, 5)); ``` ### **rotate** Rotates this Polygon counter-clockwise around the origin of *its local coordinate system* (i.e. `position`) Note: This changes the **original** points (so any `angle` will be applied on top of this rotation). | property | type | description | default | |---------- |--------------- |----------------------------------------------------------------------------------------- |-------------- | | angle | number | The rangle to rotate, in radians | | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); polygon.rotate(45); ``` ### **translate** Translates the points of this polygon by a specified amount relative to the origin of *its own coordinate system* (i.e. `position`). Note: This changes the **original** points (so any `offset` will be applied on top of this translation) | property | type | description | default | |---------- |-------- |------------------------------------- |--------- | | x | number | The horizontal amount to translate. | | | y | number | The vertical amount to translate. | | **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); polygon.translate(5, 10); ``` ### **getAABB** Compute the axis-aligned bounding box. Any current state (translations/rotations) will be applied before constructing the AABB. Note: Returns a _new_ `Polygon` each time you call this. **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); const polygonBoundingBox = polygon.getAABB(); ``` ### **getCentroid** Compute the centroid (geometric center) of the Polygon. Any current state (translations/rotations) will be applied before computing the centroid. See https://en.wikipedia.org/wiki/Centroid#Centroid_of_a_polygon Note: Returns a _new_ `Vector` each time you call this. **example:** ```js const polygon = new Polygon(new Vector(0, 0), [ new Vector(0, 0), new Vector(40, 0), new Vector(40, 40), new Vector(0, 40) ]); const centroid = polygon.getCentroid(); ```