shaku
Version:
A simple and effective JavaScript game development framework that knows its place!
816 lines (582 loc) • 30.8 kB
Markdown

[Back To Table of Content](index.md)
# Vector2
<a name="Vector2"></a>
## Vector2
A simple Vector object for 2d positions.
**Kind**: global class
* [Vector2](#Vector2)
* [new Vector2(x, y)](#new_Vector2_new)
* _instance_
* [.clone()](#Vector2+clone) ⇒ [<code>Vector2</code>](#Vector2)
* [.set(x, y)](#Vector2+set) ⇒ [<code>Vector2</code>](#Vector2)
* [.copy()](#Vector2+copy) ⇒ [<code>Vector2</code>](#Vector2)
* [.add(Other)](#Vector2+add) ⇒ [<code>Vector2</code>](#Vector2)
* [.sub(Other)](#Vector2+sub) ⇒ [<code>Vector2</code>](#Vector2)
* [.div(Other)](#Vector2+div) ⇒ [<code>Vector2</code>](#Vector2)
* [.mul(Other)](#Vector2+mul) ⇒ [<code>Vector2</code>](#Vector2)
* [.round()](#Vector2+round) ⇒ [<code>Vector2</code>](#Vector2)
* [.floor()](#Vector2+floor) ⇒ [<code>Vector2</code>](#Vector2)
* [.ceil()](#Vector2+ceil) ⇒ [<code>Vector2</code>](#Vector2)
* [.minSelf(v)](#Vector2+minSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.maxSelf(v)](#Vector2+maxSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.min(v)](#Vector2+min) ⇒ [<code>Vector2</code>](#Vector2)
* [.max(v)](#Vector2+max) ⇒ [<code>Vector2</code>](#Vector2)
* [.normalized()](#Vector2+normalized) ⇒ [<code>Vector2</code>](#Vector2)
* [.rotatedByRadians(radians)](#Vector2+rotatedByRadians) ⇒ [<code>Vector2</code>](#Vector2)
* [.rotatedByDegrees(degrees)](#Vector2+rotatedByDegrees) ⇒ [<code>Vector2</code>](#Vector2)
* [.addSelf(Other)](#Vector2+addSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.subSelf(Other)](#Vector2+subSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.divSelf(Other)](#Vector2+divSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.mulSelf(Other)](#Vector2+mulSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.roundSelf()](#Vector2+roundSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.floorSelf()](#Vector2+floorSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.ceilSelf()](#Vector2+ceilSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.normalizeSelf()](#Vector2+normalizeSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.equals(other)](#Vector2+equals) ⇒ <code>Boolean</code>
* [.approximate(other, threshold)](#Vector2+approximate) ⇒ <code>Boolean</code>
* [.length()](#Vector2+length) ⇒ <code>Number</code>
* [.scaled()](#Vector2+scaled) ⇒ [<code>Vector2</code>](#Vector2)
* [.degreesTo(other)](#Vector2+degreesTo) ⇒ <code>Number</code>
* [.radiansTo(other)](#Vector2+radiansTo) ⇒ <code>Number</code>
* [.wrappedDegreesTo(other)](#Vector2+wrappedDegreesTo) ⇒ <code>Number</code>
* [.wrappedRadiansTo(other)](#Vector2+wrappedRadiansTo) ⇒ <code>Number</code>
* [.distanceTo(other)](#Vector2+distanceTo) ⇒ <code>Number</code>
* [.distanceToSquared(other)](#Vector2+distanceToSquared) ⇒ <code>Number</code>
* [.clamp(min, max)](#Vector2+clamp) ⇒ [<code>Vector2</code>](#Vector2)
* [.clampSelf(min, max)](#Vector2+clampSelf) ⇒ [<code>Vector2</code>](#Vector2)
* [.dot(other)](#Vector2+dot) ⇒ <code>Number</code>
* [.getDegrees()](#Vector2+getDegrees) ⇒ <code>Number</code>
* [.getRadians()](#Vector2+getRadians) ⇒ <code>Number</code>
* [.string()](#Vector2+string)
* [.toArray()](#Vector2+toArray) ⇒ <code>Array.<Number></code>
* [.toDict(minimized)](#Vector2+toDict) ⇒ <code>\*</code>
* _static_
* [.zeroReadonly](#Vector2.zeroReadonly)
* [.oneReadonly](#Vector2.oneReadonly)
* [.halfReadonly](#Vector2.halfReadonly)
* [.leftReadonly](#Vector2.leftReadonly)
* [.rightReadonly](#Vector2.rightReadonly)
* [.upReadonly](#Vector2.upReadonly)
* [.downReadonly](#Vector2.downReadonly)
* [.zero()](#Vector2.zero) ⇒ [<code>Vector2</code>](#Vector2)
* [.one()](#Vector2.one) ⇒ [<code>Vector2</code>](#Vector2)
* [.half()](#Vector2.half) ⇒ [<code>Vector2</code>](#Vector2)
* [.left()](#Vector2.left) ⇒ [<code>Vector2</code>](#Vector2)
* [.right()](#Vector2.right) ⇒ [<code>Vector2</code>](#Vector2)
* [.up()](#Vector2.up) ⇒ [<code>Vector2</code>](#Vector2)
* [.down()](#Vector2.down) ⇒ [<code>Vector2</code>](#Vector2)
* [.random()](#Vector2.random) ⇒ [<code>Vector2</code>](#Vector2)
* [.fromDegrees(degrees)](#Vector2.fromDegrees) ⇒ [<code>Vector2</code>](#Vector2)
* [.fromRadians(radians)](#Vector2.fromRadians) ⇒ [<code>Vector2</code>](#Vector2)
* [.lerp(p1, p2, a)](#Vector2.lerp) ⇒ [<code>Vector2</code>](#Vector2)
* [.degreesBetween(p1, p2)](#Vector2.degreesBetween) ⇒ <code>Number</code>
* [.radiansBetween(p1, p2)](#Vector2.radiansBetween) ⇒ <code>Number</code>
* [.wrappedDegreesBetween(p1, p2)](#Vector2.wrappedDegreesBetween) ⇒ <code>Number</code>
* [.wrappedRadiansBetween(p1, p2)](#Vector2.wrappedRadiansBetween) ⇒ <code>Number</code>
* [.distance(p1, p2)](#Vector2.distance) ⇒ <code>Number</code>
* [.cross(p1, p2)](#Vector2.cross) ⇒ <code>Number</code>
* [.dot(p1, p2)](#Vector2.dot) ⇒ <code>Number</code>
* [.parse(str)](#Vector2.parse) ⇒ [<code>Vector2</code>](#Vector2)
* [.fromArray(arr)](#Vector2.fromArray) ⇒ [<code>Vector2</code>](#Vector2)
* [.fromDict(data)](#Vector2.fromDict) ⇒ [<code>Vector2</code>](#Vector2)
<a name="new_Vector2_new"></a>
### new Vector2(x, y)
Create the Vector object.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| x | <code>number</code> | <code>0</code> | Vector X. |
| y | <code>number</code> | <code>0</code> | Vector Y. |
<a name="Vector2+clone"></a>
### vector2.clone() ⇒ [<code>Vector2</code>](#Vector2)
Clone the vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - cloned vector.
<a name="Vector2+set"></a>
### vector2.set(x, y) ⇒ [<code>Vector2</code>](#Vector2)
Set vector value.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
| Param | Type | Description |
| --- | --- | --- |
| x | <code>Number</code> | X component. |
| y | <code>Number</code> | Y component. |
<a name="Vector2+copy"></a>
### vector2.copy() ⇒ [<code>Vector2</code>](#Vector2)
Copy values from other vector into self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
<a name="Vector2+add"></a>
### vector2.add(Other) ⇒ [<code>Vector2</code>](#Vector2)
Return a new vector of this + other.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector3 or number to add to all components. |
<a name="Vector2+sub"></a>
### vector2.sub(Other) ⇒ [<code>Vector2</code>](#Vector2)
Return a new vector of this - other.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector3 or number to sub from all components. |
<a name="Vector2+div"></a>
### vector2.div(Other) ⇒ [<code>Vector2</code>](#Vector2)
Return a new vector of this / other.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector3 or number to divide by all components. |
<a name="Vector2+mul"></a>
### vector2.mul(Other) ⇒ [<code>Vector2</code>](#Vector2)
Return a new vector of this * other.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector2 or number to multiply with all components. |
<a name="Vector2+round"></a>
### vector2.round() ⇒ [<code>Vector2</code>](#Vector2)
Return a round copy of this vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2+floor"></a>
### vector2.floor() ⇒ [<code>Vector2</code>](#Vector2)
Return a floored copy of this vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2+ceil"></a>
### vector2.ceil() ⇒ [<code>Vector2</code>](#Vector2)
Return a ceiled copy of this vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2+minSelf"></a>
### vector2.minSelf(v) ⇒ [<code>Vector2</code>](#Vector2)
Set self values to be min values between self and a given vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Self.
| Param | Type | Description |
| --- | --- | --- |
| v | [<code>Vector2</code>](#Vector2) | Vector to min with. |
<a name="Vector2+maxSelf"></a>
### vector2.maxSelf(v) ⇒ [<code>Vector2</code>](#Vector2)
Set self values to be max values between self and a given vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Self.
| Param | Type | Description |
| --- | --- | --- |
| v | [<code>Vector2</code>](#Vector2) | Vector to max with. |
<a name="Vector2+min"></a>
### vector2.min(v) ⇒ [<code>Vector2</code>](#Vector2)
Create a clone vector that is the min result between self and a given vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Result vector.
| Param | Type | Description |
| --- | --- | --- |
| v | [<code>Vector2</code>](#Vector2) | Vector to min with. |
<a name="Vector2+max"></a>
### vector2.max(v) ⇒ [<code>Vector2</code>](#Vector2)
Create a clone vector that is the max result between self and a given vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Result vector.
| Param | Type | Description |
| --- | --- | --- |
| v | [<code>Vector2</code>](#Vector2) | Vector to max with. |
<a name="Vector2+normalized"></a>
### vector2.normalized() ⇒ [<code>Vector2</code>](#Vector2)
Return a normalized copy of this vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2+rotatedByRadians"></a>
### vector2.rotatedByRadians(radians) ⇒ [<code>Vector2</code>](#Vector2)
Get a copy of this vector rotated by radians.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - New vector with the length of this vector and direction rotated by given radians.
| Param | Type | Description |
| --- | --- | --- |
| radians | <code>Number</code> | Radians to rotate by. |
<a name="Vector2+rotatedByDegrees"></a>
### vector2.rotatedByDegrees(degrees) ⇒ [<code>Vector2</code>](#Vector2)
Get a copy of this vector rotated by degrees.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - New vector with the length of this vector and direction rotated by given degrees.
| Param | Type | Description |
| --- | --- | --- |
| degrees | <code>Number</code> | Degrees to rotate by. |
<a name="Vector2+addSelf"></a>
### vector2.addSelf(Other) ⇒ [<code>Vector2</code>](#Vector2)
Add other vector values to self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector or number to add. |
<a name="Vector2+subSelf"></a>
### vector2.subSelf(Other) ⇒ [<code>Vector2</code>](#Vector2)
Sub other vector values from self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector or number to substract. |
<a name="Vector2+divSelf"></a>
### vector2.divSelf(Other) ⇒ [<code>Vector2</code>](#Vector2)
Divide this vector by other vector values.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector or number to divide by. |
<a name="Vector2+mulSelf"></a>
### vector2.mulSelf(Other) ⇒ [<code>Vector2</code>](#Vector2)
Multiply this vector by other vector values.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
| Param | Type | Description |
| --- | --- | --- |
| Other | <code>Number</code> \| [<code>Vector2</code>](#Vector2) | Vector or number to multiply by. |
<a name="Vector2+roundSelf"></a>
### vector2.roundSelf() ⇒ [<code>Vector2</code>](#Vector2)
Round self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
<a name="Vector2+floorSelf"></a>
### vector2.floorSelf() ⇒ [<code>Vector2</code>](#Vector2)
Floor self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
<a name="Vector2+ceilSelf"></a>
### vector2.ceilSelf() ⇒ [<code>Vector2</code>](#Vector2)
Ceil self.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
<a name="Vector2+normalizeSelf"></a>
### vector2.normalizeSelf() ⇒ [<code>Vector2</code>](#Vector2)
Return a normalized copy of this vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - this.
<a name="Vector2+equals"></a>
### vector2.equals(other) ⇒ <code>Boolean</code>
Return if vector equals another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Boolean</code> - if vectors are equal.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector to compare to. |
<a name="Vector2+approximate"></a>
### vector2.approximate(other, threshold) ⇒ <code>Boolean</code>
Return if vector approximately equals another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Boolean</code> - if vectors are equal.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector to compare to. |
| threshold | <code>Number</code> | Distance threshold to consider as equal. Defaults to 1. |
<a name="Vector2+length"></a>
### vector2.length() ⇒ <code>Number</code>
Return vector length (aka magnitude).
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Vector length.
<a name="Vector2+scaled"></a>
### vector2.scaled() ⇒ [<code>Vector2</code>](#Vector2)
Return a copy of this vector multiplied by a factor.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2+degreesTo"></a>
### vector2.degreesTo(other) ⇒ <code>Number</code>
Get degrees between this vector and another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in degrees.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+radiansTo"></a>
### vector2.radiansTo(other) ⇒ <code>Number</code>
Get radians between this vector and another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in radians.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+wrappedDegreesTo"></a>
### vector2.wrappedDegreesTo(other) ⇒ <code>Number</code>
Get degrees between this vector and another vector.
Return values between 0 to 360.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in degrees.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+wrappedRadiansTo"></a>
### vector2.wrappedRadiansTo(other) ⇒ <code>Number</code>
Get radians between this vector and another vector.
Return values between 0 to PI2.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in radians.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+distanceTo"></a>
### vector2.distanceTo(other) ⇒ <code>Number</code>
Calculate distance between this vector and another vectors.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Distance between vectors.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+distanceToSquared"></a>
### vector2.distanceToSquared(other) ⇒ <code>Number</code>
Calculate squared distance between this vector and another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Distance between vectors.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Other vector. |
<a name="Vector2+clamp"></a>
### vector2.clamp(min, max) ⇒ [<code>Vector2</code>](#Vector2)
Return a clone and clamp its values to be between min and max.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Clamped vector.
| Param | Type | Description |
| --- | --- | --- |
| min | [<code>Vector2</code>](#Vector2) | Min vector. |
| max | [<code>Vector2</code>](#Vector2) | Max vector. |
<a name="Vector2+clampSelf"></a>
### vector2.clampSelf(min, max) ⇒ [<code>Vector2</code>](#Vector2)
Clamp this vector values to be between min and max.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Self.
| Param | Type | Description |
| --- | --- | --- |
| min | [<code>Vector2</code>](#Vector2) | Min vector. |
| max | [<code>Vector2</code>](#Vector2) | Max vector. |
<a name="Vector2+dot"></a>
### vector2.dot(other) ⇒ <code>Number</code>
Calculate the dot product with another vector.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Dot product value.
| Param | Type | Description |
| --- | --- | --- |
| other | [<code>Vector2</code>](#Vector2) | Vector to calculate dot with. |
<a name="Vector2+getDegrees"></a>
### vector2.getDegrees() ⇒ <code>Number</code>
Get vector's angle in degrees.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Vector angle in degrees.
<a name="Vector2+getRadians"></a>
### vector2.getRadians() ⇒ <code>Number</code>
Get vector's angle in radians.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Vector angle in degrees.
<a name="Vector2+string"></a>
### vector2.string()
Convert to string.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
<a name="Vector2+toArray"></a>
### vector2.toArray() ⇒ <code>Array.<Number></code>
Convert to array of numbers.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Array.<Number></code> - Vector components as array.
<a name="Vector2+toDict"></a>
### vector2.toDict(minimized) ⇒ <code>\*</code>
Convert to dictionary.
**Kind**: instance method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>\*</code> - Dictionary with {x,y}
| Param | Type | Description |
| --- | --- | --- |
| minimized | <code>Boolean</code> | If true, will not include keys that their values are 0. You can use fromDict on minimized dicts. |
<a name="Vector2.zeroReadonly"></a>
### Vector2.zeroReadonly
Vector with 0,0 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.oneReadonly"></a>
### Vector2.oneReadonly
Vector with 1,1 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.halfReadonly"></a>
### Vector2.halfReadonly
Vector with 0.5,0.5 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.leftReadonly"></a>
### Vector2.leftReadonly
Vector with -1,0 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.rightReadonly"></a>
### Vector2.rightReadonly
Vector with 1,0 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.upReadonly"></a>
### Vector2.upReadonly
Vector with 0,1 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.downReadonly"></a>
### Vector2.downReadonly
Vector with 0,-1 values as a frozen shared object.
Be careful not to try and change it.
**Kind**: static property of [<code>Vector2</code>](#Vector2)
<a name="Vector2.zero"></a>
### Vector2.zero() ⇒ [<code>Vector2</code>](#Vector2)
Get vector (0,0).
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.one"></a>
### Vector2.one() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with 1,1 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.half"></a>
### Vector2.half() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with 0.5,0.5 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.left"></a>
### Vector2.left() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with -1,0 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.right"></a>
### Vector2.right() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with 1,0 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.up"></a>
### Vector2.up() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with 0,-1 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.down"></a>
### Vector2.down() ⇒ [<code>Vector2</code>](#Vector2)
Get vector with 0,1 values.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.random"></a>
### Vector2.random() ⇒ [<code>Vector2</code>](#Vector2)
Get a random vector with length of 1.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
<a name="Vector2.fromDegrees"></a>
### Vector2.fromDegrees(degrees) ⇒ [<code>Vector2</code>](#Vector2)
Get vector from degrees.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| degrees | <code>Number</code> | Angle to create vector from (0 = vector pointing right). |
<a name="Vector2.fromRadians"></a>
### Vector2.fromRadians(radians) ⇒ [<code>Vector2</code>](#Vector2)
Get vector from radians.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| radians | <code>Number</code> | Angle to create vector from (0 = vector pointing right). |
<a name="Vector2.lerp"></a>
### Vector2.lerp(p1, p2, a) ⇒ [<code>Vector2</code>](#Vector2)
Lerp between two vectors.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - result vector.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
| a | <code>Number</code> | Lerp factor (0.0 - 1.0). |
<a name="Vector2.degreesBetween"></a>
### Vector2.degreesBetween(p1, p2) ⇒ <code>Number</code>
Get degrees between two vectors.
Return values between -180 to 180.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in degrees.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.radiansBetween"></a>
### Vector2.radiansBetween(p1, p2) ⇒ <code>Number</code>
Get radians between two vectors.
Return values between -PI to PI.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in radians.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.wrappedDegreesBetween"></a>
### Vector2.wrappedDegreesBetween(p1, p2) ⇒ <code>Number</code>
Get degrees between two vectors.
Return values between 0 to 360.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in degrees.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.wrappedRadiansBetween"></a>
### Vector2.wrappedRadiansBetween(p1, p2) ⇒ <code>Number</code>
Get radians between two vectors.
Return values between 0 to PI2.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Angle between vectors in radians.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.distance"></a>
### Vector2.distance(p1, p2) ⇒ <code>Number</code>
Calculate distance between two vectors.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Distance between vectors.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.cross"></a>
### Vector2.cross(p1, p2) ⇒ <code>Number</code>
Return cross product between two vectors.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Cross between vectors.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.dot"></a>
### Vector2.dot(p1, p2) ⇒ <code>Number</code>
Return dot product between two vectors.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: <code>Number</code> - Dot between vectors.
| Param | Type | Description |
| --- | --- | --- |
| p1 | [<code>Vector2</code>](#Vector2) | First vector. |
| p2 | [<code>Vector2</code>](#Vector2) | Second vector. |
<a name="Vector2.parse"></a>
### Vector2.parse(str) ⇒ [<code>Vector2</code>](#Vector2)
Parse and return a vector object from string in the form of "x,y".
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Parsed vector.
| Param | Type | Description |
| --- | --- | --- |
| str | <code>String</code> | String to parse. |
<a name="Vector2.fromArray"></a>
### Vector2.fromArray(arr) ⇒ [<code>Vector2</code>](#Vector2)
Create vector from array of numbers.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Vector instance.
| Param | Type | Description |
| --- | --- | --- |
| arr | <code>Array.<Number></code> | Array of numbers to create vector from. |
<a name="Vector2.fromDict"></a>
### Vector2.fromDict(data) ⇒ [<code>Vector2</code>](#Vector2)
Create vector from a dictionary.
**Kind**: static method of [<code>Vector2</code>](#Vector2)
**Returns**: [<code>Vector2</code>](#Vector2) - Newly created vector.
| Param | Type | Description |
| --- | --- | --- |
| data | <code>\*</code> | Dictionary with {x,y}. |