# Vector

### From GMod Wiki

## Object Methods

**Vector**:ToScreen

**Vector**:__add

**Vector**:__div

**Vector**:__eq

**Vector**:__gc

**Vector**:__index

**Vector**:__mul

**Vector**:__newindex

**Vector**:__tostring

**Vector**:__umn

**Vector**:Add

**Vector**:Angle

**Vector**:Cross

**Vector**:Distance

**Vector**:Dot

**Vector**:DotProduct

**Vector**:GetNormal

**Vector**:GetNormalized

**Vector**:Length

**Vector**:Length2D

**Vector**:Length2DSqr

**Vector**:LengthSqr

**Vector**:Mul

**Vector**:Normalize

**Vector**:Rotate

**Vector**:Sub

**Vector**:Zero

This page needs to be edited as it contains information that is unclear or incorrect. Improvement can be discussed on the talk page. Find more pages that need work here.Details: None given. |

Lua: Vector |

Description: | Gives a brief explanation of Vector library. |

Original Author: | Merlzoth |

Created: | 1 December 2006 |

A vector, in the sense used in both Garry's Mod and this documentation, is a quantity represented by three numbers, which express distance from the origin along three directed, perpendicular lines that pass through the origin called the axes. In this setting, vectors can be used to represent position, velocity and rotation in space.

Points can be also represented as vectors from the origin.

## Vector Mathematics

### Reading components of an vector

Msg(tostring(vector.x)) //Prints X component of vector Msg(tostring(vector.y)) //Prints Y component of vector Msg(tostring(vector.z)) //Prints Z component of vector

### Sum

The result of adding two vectors, a and b, is a vector from the tail of a to the head of b.

*See Also:* http://mathworld.wolfram.com/VectorAddition.html

### Difference

The result of subtracting one vector from another, is a vector from the head of the subtrahend to the head of the minuend.

*See Also:* http://mathworld.wolfram.com/VectorDifference.html

### Scalar Multiplication

Scalar multiplication is a way of scaling a vector. If the scalar is negative, the vector also undergoes a rotation of 180 degrees.

*See Also:* http://mathworld.wolfram.com/ScalarMultiplication.html

### Division

Vectors can be divided by scalars, but the result of division by a vector is undefined.

### Dot Product

The product of two vectors returns a scalar, with which the angle between two vectors can be calculated. To get the angle between the two vectors. you take the inverse cosine of the dot product divided by the product of the magnitudes of the two vectors.

*See Also:* http://mathworld.wolfram.com/DotProduct.html

### Cross Product

The cross product of two vectors a and b is a pseudovector perpendicular to both a and b.

*See Also:* http://mathworld.wolfram.com/CrossProduct.html

### Normalization

Not to be confused with the normal of a vector, normalization is the process whereby a vector is made to have unit length, while preserving its original direction. A vector with unit length is said to be a unit vector.

http://mathworld.wolfram.com/NormalVector.html

## Code

### Assignment

Example code:

local vector = Vector( 0, 0, 1 ) Msg( tostring( vector ) .. "\n" )

### Operators

#### Addition

*Main page:* Vector._add

local a = Vector( 0, 0, 1 ) local b = Vector( 1, 1, 0 ) Msg( tostring( a + b ) .. "\n" )

#### Subtraction

*Main page:* Vector._sub

local a = Vector( 0, 0, 1 ) local b = Vector( 1, 1, 0 ) Msg( tostring( a - b ) .. "\n" )

#### Multiplication

*Main page:* Vector._mul

local vector = Vector( 0, 0, 1 ) Msg( tostring( vector * 10 ) .. "\n" )

#### Division

*Main page:* Vector._div

local vector = Vector( 0, 0, 1 ) Msg( tostring( vector / 10 ) .. "\n" )

#### Equality

*Main page:* Vector._eq

local a = Vector( 0, 0, 1 ) local b = Vector( 1, 0, 0 ) Msg( tostring( a == b and "Equal" or "Not Equal!" ) .. "\n" )

### Methods

#### Add

*Main page:* Vector.Add

#### Angle

*Main page:* Vector.Angle

#### Cross

*Main page:* Vector.Cross

Returns the cross product of the vector with the argument. Example code:

local a = Vector( 0, 0, 1 ) local b = Vector( 1, 0, 0 ) Msg( tostring( a:Cross( b ) ) .. "\n" )

#### Distance

*Main page:* Vector.Distance

#### Dot

*Main page:* Vector.Dot

#### DotProduct

*Main page:* Vector.DotProduct

Returns the dot product of the vector with the argument.

local a = Vector( 0, 0, 1 ) local b = Vector( 1, 0, 0 ) Msg( tostring( a:DotProduct( b ) ) .. "\n" )

#### GetNormal

*Main page:* Vector.GetNormal

Returns the normal of the vector.

local vector = Vector( 0, 0, 1 ) Msg( tostring( vector:GetNormal() ) .. "\n" )

#### GetNormalized

*Main page:* Vector.GetNormalized

Returns the normalized vector.

local vector = Vector( 0, 0, 10 ) Msg( tostring( vector:GetNormalized() ) .. "\n" )

#### Length

*Main page:* Vector.Length

Returns the magnitude of the vector.

local vector = Vector( 0, 0, 10 ) Msg( tostring( vector:Length() ) .. "\n" );

#### Mul

*Main page:* Vector.Mul

Performs scalar multiplication on the vector and the argument.

local vector = Vector( 0, 0, 1 ) vector:Mul( 10 ) Msg( tostring( vector ) .. "\n" )

#### Normalize

*Main page:* Vector.Normalize

Normalizes the vector.

local vector = Vector( 0, 0, 10 ) vector:Normalize() Msg( tostring( vector:GetNormalized() ) .. "\n" )

#### Sub

*Main page:* Vector.Sub