<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [rc-js-util](./rc-js-util.md) &gt; [Vec2](./rc-js-util.vec2.md)

## Vec2 class

Vector 2.

**Signature:**

```typescript
export declare abstract class Vec2<TArray extends TTypedArray> extends ATypedArrayTuple<2, TArray> 
```
**Extends:** [ATypedArrayTuple](./rc-js-util.atypedarraytuple.md)<!-- -->&lt;2, TArray&gt;

## Remarks

See static properties for constructors. Instances are not an extension of this class, but of the static members.

## Properties

<table><thead><tr><th>

Property


</th><th>

Modifiers


</th><th>

Type


</th><th>

Description


</th></tr></thead>
<tbody><tr><td>

["0"](./rc-js-util.vec2._0_.md)


</td><td>


</td><td>

number


</td><td>

x


</td></tr>
<tr><td>

["1"](./rc-js-util.vec2._1_.md)


</td><td>


</td><td>

number


</td><td>

y


</td></tr>
<tr><td>

[constructor](./rc-js-util.vec2.constructor.md)


</td><td>


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;TArray&gt;


</td><td>


</td></tr>
<tr><td>

[constructors](./rc-js-util.vec2.constructors.md)


</td><td>

`protected`

`static`


</td><td>

Map&lt;import("../t-typed-array-ctor.js").[TFullSetTypedArrayCtor](./rc-js-util.tfullsettypedarrayctor.md)<!-- -->, Function&gt;


</td><td>


</td></tr>
<tr><td>

[f32](./rc-js-util.vec2.f32.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Float32Array&gt;


</td><td>


</td></tr>
<tr><td>

[f64](./rc-js-util.vec2.f64.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Float64Array&gt;


</td><td>


</td></tr>
<tr><td>

[i16](./rc-js-util.vec2.i16.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Int16Array&gt;


</td><td>


</td></tr>
<tr><td>

[i32](./rc-js-util.vec2.i32.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Int32Array&gt;


</td><td>


</td></tr>
<tr><td>

[i64](./rc-js-util.vec2.i64.md)


</td><td>

`static`


</td><td>

null


</td><td>


</td></tr>
<tr><td>

[i8](./rc-js-util.vec2.i8.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Int8Array&gt;


</td><td>


</td></tr>
<tr><td>

[TTypeGuardVec2](./rc-js-util.vec2.ttypeguardvec2.md)


</td><td>


</td><td>

true


</td><td>


</td></tr>
<tr><td>

[u16](./rc-js-util.vec2.u16.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Uint16Array&gt;


</td><td>


</td></tr>
<tr><td>

[u32](./rc-js-util.vec2.u32.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Uint32Array&gt;


</td><td>


</td></tr>
<tr><td>

[u64](./rc-js-util.vec2.u64.md)


</td><td>

`static`


</td><td>

null


</td><td>


</td></tr>
<tr><td>

[u8](./rc-js-util.vec2.u8.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Uint8Array&gt;


</td><td>


</td></tr>
<tr><td>

[u8c](./rc-js-util.vec2.u8c.md)


</td><td>

`static`


</td><td>

[IVec2Ctor](./rc-js-util.ivec2ctor.md)<!-- -->&lt;Uint8ClampedArray&gt;


</td><td>


</td></tr>
</tbody></table>

## Methods

<table><thead><tr><th>

Method


</th><th>

Modifiers


</th><th>

Description


</th></tr></thead>
<tbody><tr><td>

[add(\_vec, \_result)](./rc-js-util.vec2.add.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[bound2d(\_range)](./rc-js-util.vec2.bound2d.md)


</td><td>


</td><td>

If this point is outside of the range, set that dimension to the extrema of the range.


</td></tr>
<tr><td>

[castToBaseType()](./rc-js-util.vec2.casttobasetype.md)


</td><td>


</td><td>

Although the typed array tuples extend a typed array, they are not structurally compatible. This function returns the argument passed without modification but cast as the underlying storage type, e.g. Float32Array.


</td></tr>
<tr><td>

[copyFromBuffer(\_memoryDataView, \_pointer, \_littleEndian)](./rc-js-util.vec2.copyfrombuffer.md)


</td><td>


</td><td>

If endianness is not supplied the platform's endianness will be used.


</td></tr>
<tr><td>

[copyToBuffer(\_memoryDataView, \_pointer, \_littleEndian)](./rc-js-util.vec2.copytobuffer.md)


</td><td>


</td><td>

If endianness is not supplied the platform's endianness will be used.


</td></tr>
<tr><td>

[dotProduct(\_vec)](./rc-js-util.vec2.dotproduct.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[getCtor(ctor)](./rc-js-util.vec2.getctor.md)


</td><td>

`static`


</td><td>


</td></tr>
<tr><td>

[getLoggableValue()](./rc-js-util.vec2.getloggablevalue.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[getMagnitude()](./rc-js-util.vec2.getmagnitude.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[getMagnitudeSquared()](./rc-js-util.vec2.getmagnitudesquared.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[getNormal(\_result)](./rc-js-util.vec2.getnormal.md)


</td><td>


</td><td>

Returns the normal to this vector.


</td></tr>
<tr><td>

[getX()](./rc-js-util.vec2.getx.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[getY()](./rc-js-util.vec2.gety.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[isEqualTo(\_other)](./rc-js-util.vec2.isequalto.md)


</td><td>


</td><td>

Component-wise equals.


</td></tr>
<tr><td>

[mat3Multiply(\_mat, \_result)](./rc-js-util.vec2.mat3multiply.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[normalize(\_result)](./rc-js-util.vec2.normalize.md)


</td><td>


</td><td>

Returns a unit vector in the direction of this vector.


</td></tr>
<tr><td>

[scalarDivide(\_value, \_result)](./rc-js-util.vec2.scalardivide.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[scalarMultiply(\_value, \_result)](./rc-js-util.vec2.scalarmultiply.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[setX(\_x)](./rc-js-util.vec2.setx.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[setY(\_y)](./rc-js-util.vec2.sety.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[subtract(\_vec, \_result)](./rc-js-util.vec2.subtract.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[translate2d(\_dx, \_dy)](./rc-js-util.vec2.translate2d.md)


</td><td>


</td><td>

Shifts this position by the arguments.


</td></tr>
<tr><td>

[update(\_x, \_y)](./rc-js-util.vec2.update.md)


</td><td>


</td><td>


</td></tr>
<tr><td>

[vec2Divide(\_value, \_result)](./rc-js-util.vec2.vec2divide.md)


</td><td>


</td><td>

Divide `this` by `_value`<!-- -->.


</td></tr>
<tr><td>

[vec2Multiply(\_value, \_result)](./rc-js-util.vec2.vec2multiply.md)


</td><td>


</td><td>

Multiply `this` by `_value`<!-- -->.


</td></tr>
</tbody></table>
