# Vector Class

The vector class holds a single 3 component vector. A vector describes a direction in space, and it's important to use a vector or Position as appropriate for the data that is being calculated. When being multiplied by a Matrix, this class will implicitly have a 4th component (W component) of 0. A new vector can be created without any arguments, with 3 arguments for the x,y,z values, or with a single argument which is a variable that has 3 entries such as a list of length 3, or a position or vector. Examples of creating a vector: v = tdu.Vector() # starts as (0, 0, 0) v2 = tdu.Vector(0, 0, -1) values = [0, 1, 0] v3 = tdu.Vector(values)

## Members

`x`

→ **(Read Only)**:

Gets or sets the X component of the vector.

`y`

→ **(Read Only)**:

Gets or sets the Y component of the vector.

`z`

→ **(Read Only)**:

Gets or sets the Z component of the vector.

## Methods

`cross(vec)`

:

: -> Vector

Returns the cross product of this vector and the passed vector. The operation is self cross vec vec - The other vector to use to calculate the cross product

c = v.cross(otherV)

`angle(vec)`

:

: -> float

Returns the angel (in degrees) between the current vector (vec1) and another vector (vec2).

l = v.angle(v2)

`project(vec1, vec2)`

:

:

Projects this vector onto the plan defined by vec1 and vec2. Both vec1 and vec2 must be normalized. The result will may not be normalized. vec1, vec2 - The vectors that specify the plane to project onto. Must be normalized.

v.project(v1, v2)

`distance(vec)`

:

: -> float

Returns the distance of the current vector (vec1) to another vector (vec2).

l = v.distance(v2)

`lengthSquared()`

:

: -> float

Returns the squared length of this vector.

l = v.lengthSquared()

`copy()`

:

: -> Vector

Returns a new vector that is a copy of the vector.

newV = v.copy()

`normalize()`

:

:

Makes the length of this vector 1.

m.normalize()

`lerp(vec, vec, t)`

:

: -> vec

Returns vec1 * (1.0 - t) + vec2 * t, i.e., the linear interpolation of vec1 and vec2 using the floating-point value t. The value for t is not restricted to the range [0, 1]. The vec1 referes to the current vector.

l = v.lerp(v, v2, t)

`reflect(vec)`

:

:

Reflects the current vector (vec) according to another vector (vec2).

v.reflect(v2)

`dot(vec)`

:

: -> float

Returns the dot product of this vector and the passed vector. vec - The other vector to use to calculate the dot product

d = v.dot(otherV)

`scale(x, y, z)`

:

:

Scales each component of the vector by the specified values. x, y, z - The values to scale each component of the vector by.

v.scale(1, 2, 1)

`length()`

:

: -> float

Returns the length of this vector.

l = m.length()

`lerp(vec, vec, t)`

:

: -> vec

Returns vec1 * (1.0 - t) + vec2 * t, i.e., the linear interpolation of vec1 and vec2 using the floating-point value t. The value for t is not restricted to the range [0, 1]. The vec1 referes to the current vector.

l = v.lerp(v, v2, t)

TouchDesigner Build: