### Members

#### (static, constant) forward

A constant the defines the forward vector.
WARNING: be extremly careful not to modify the values of this vector, because this will cause some
matrix functions to not fuction properly.

- Source:

#### (static, constant) up

A constant the defines the up vector.
WARNING: be extremly careful not to modify the values of this vector, because this will cause some
matrix functions, like SQR.Matrix44#lookAt to not fuction properly.

- Source:

### Methods

#### add(a, bopt)

Sets this vector to the sum of a and b.

##### Parameters:

Name | Type | Attributes | Description |
---|---|---|---|

`a` |
SQR.V3 | ||

`b` |
SQR.V3 |
<optional> |
if omitted the current vector is used, which basically means that a is added to current vector. |

- Source:

##### Example

```
a.add(b, c); // a = b + c
a.add(a, b); // a += b
a.add(b); // alt a += b
a.add(a, b).add(a, c); // = a + b + c
```

#### addNormal()

Use this for caculating per-vertex normals.
A normal from each contributing face can be added here.
When all the normals are added, a vector that is the sum of them all
is available as `this.normal` property. The pre-vertex normal can be caluculated
by normalizing this vector.

- Source:

#### clone() → {SQR.V3}

Creates and returns a copy of this vector.
Be careful with this method, because it creates a new object.
Calling this function repeatedly in a rendering loop can have an adverce impact on performance.

- Source:

##### Returns:

a new vector that is a copy of this vector

- Type
- SQR.V3

#### copyFrom(p)

Copies values from vector p into this vector

##### Parameters:

Name | Type | Description |
---|---|---|

`p` |
SQR.V2 | SQR.V3 | vector to copy the values from |

- Source:

#### copyTo(p)

Copies values from this vector into the p vector

##### Parameters:

Name | Type | Description |
---|---|---|

`p` |
SQR.V2 | SQR.V3 | vector to copy the values to |

- Source:

#### cross()

Sets this vector to the result of a cross-product of a and b (`a x b`).

- Source:

#### isZero()

Shorthand to check if this vector is a zero vector
(i.e. all compoments are very small or equal to 0) The values are compared against SQR.EPSILON

- Source:

#### mag() → {Number}

Return the length (magnitude) of this vector

- Source:

##### Returns:

the length of this vector

- Type
- Number

#### magsq()

Returns the squared length of this vector. This can be useful to optimize some calculations, since
the actual length requires a squareroot operation (`Math.sqrt()`)
which can be slow if used on many vectors.

- Source:

#### mul(s)

Multiples this vector by a scalar.
This function can be used in conjunction with SQR.V3#norm
to set the vector to a given length `v.norm().mul(10)1 yields a vector of length 10.

##### Parameters:

Name | Type | Description |
---|---|---|

`s` |
Number | the value to multiply the the vector by. |

- Source:

#### neg()

Negates this vector.

- Source:

#### norm()

Normalizes this vector, i.e. sets its length (magnitude) to 1.

- Source:

#### resetNormal()

This is used to reset the normal to 0,0,0.

- Source:

#### set(x, y, z, w)

Sets the vector compoment to values. Note that this class has actually 4 not 3 compoments.

##### Parameters:

Name | Type | Description |
---|---|---|

`x` |
the value of the x compoment | |

`y` |
the value of the y compoment | |

`z` |
the value of the z compoment | |

`w` |
the value of the homogeneous coordinate, defaults to 1 and leave it that way unless you really know what ypu are doing. |

- Source:

#### sub(a, b)

a.sub(b, a) -> a = from a to b

##### Parameters:

Name | Type | Description |
---|---|---|

`a` |
||

`b` |

- Source:

#### toScreenSpace(wopt, hopt)

Assuming the vector was projected using the SQR.ProjectionMatrix, use this
to calculate it's screen space. (useful for software rendering, ex. on canvas 2d)

##### Parameters:

Name | Type | Attributes | Description |
---|---|---|---|

`w` |
Number |
<optional> |
the width of the screen (defaults to `window.innerWidth`) |

`h` |
Number |
<optional> |
the height of the screen (defaults to `window.innerHeight`) |

- Source:

#### (static) dot() → {Number}

Returns the dot product of a nd b (`a . b`).

- Source:

##### Returns:

result of a . b

- Type
- Number