Unigine::Unigine::vec4 Struct

This class represents a vector of 4 float components.

vec4(const __m128 & v)

Constructor. Initializes the vector using a given 128-bit variable as a source.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

• const __m128 & v - 128-bit variable

vec4(const quat & q)

Arguments

• const quat & q

vec4(const hvec4 & v)

Constructor. Initializes the vector using a given hvec4 source vector.

Arguments

• const hvec4 & v - Source vector.

vec4()

Default constructor. Produces a zero vector.

vec4(const vec4 & v)

Constructor. Initializes the vector by copying a given source vector.

Arguments

• const vec4 & v - Source vector.

vec4(const vec2 & v, float z, float w)

Constructor. Initializes the vector using a given two-component vec2 source vector and two scalars.

Arguments

• const vec2 & v - Two-component source vector.
• float z - Z component of the vector.
• float w - W component of the vector.

vec4(const vec3 & v, float w)

Constructor. Initializes the vector using a given three-component vec3 source vector and a scalar.

Arguments

• const vec3 & v - Three-component source vector.
• float w - W component of the vector.

vec4(float x, float y, float z, float w)

Constructor. Initializes the vector using given float values.

Arguments

• float x - X component of the vector.
• float y - Y component of the vector.
• float z - Z component of the vector.
• float w - W component of the vector.

explicit vec4(float v)

Constructor. Initializes the vector using a given scalar value: x=v, y=v, z=v, w=v.

Arguments

• float v - Scalar value.

explicit vec4(const vec2 & v)

Constructor. Initializes the vector using a given two-component vec2 source vector: x=v.x, y=v.y, z=0.0f, w=1.0f.

Arguments

• const vec2 & v - Two-component source vector.

explicit vec4(const vec3 & v)

Constructor. Initializes the vector using a given three-component vec3 source vector: x=v.x, y=v.y, z=v.z, w=1.0f.

Arguments

• const vec3 & v - Three-component source vector.

explicit vec4(const dvec4 & v)

Constructor. Initializes the vector using a given dvec4 source vector.

Arguments

• const dvec4 & v - Source vector.

explicit vec4(const ivec4 & v)

Constructor. Initializes the vector using a given ivec4 source vector.

Arguments

• const ivec4 & v - Source vector.

explicit vec4(const bvec4 & v)

Constructor. Initializes the vector using a given bvec4 source vector.

Arguments

• const bvec4 & v - Source vector.

explicit vec4(const float * v)

Constructor. Initializes the vector using a given pointer to the array of float elements: x=v[0], y=v[1], z=v[2], w=v[3].

Arguments

• const float * v - Pointer to the array of float elements.

voidset(float x_, float y_, float z_, float w_)

Sets the vector by components.

Arguments

• float x_ - X component of the vector.
• float y_ - Y component of the vector.
• float z_ - Z component of the vector.
• float w_ - W component of the vector.

voidset(const float * val)

Sets the vector using the array of float elements: x=val[0], y=val[1], z=val[2], w=val[3].

Arguments

• const float * val - Pointer to the array of float elements.

voidset(const vec4 & val)

Sets the vector equal to the specified source vector.

Arguments

• const vec4 & val - Source vector.

voidset(const vec2 & val, float z_, float w_)

Sets the vector using a two-component vec2 source vector and two scalars.

Arguments

• const vec2 & val - Two-component source vector.
• float z_ - Z component of the vector.
• float w_ - W component of the vector.

voidset(const vec3 & val, float w_)

Sets the vector using a three-component vec3 source vector and a scalar.

Arguments

• const vec3 & val - Three-component source vector.
• float w_ - W component of the vector.

voidset(const quat & q)

Sets the vector using a quaternion.

Arguments

• const quat & q - Quaternion.

voidset(float val)

Sets the vector components equal to specified scalar value: x=val, y=val, z=val, w=val.

Arguments

• float val - Scalar value.

voidget(float * val) const

Gets the vector: val[0]=x, val[1]=y, val[2]=z, val[3]=w.

Arguments

• float * val - Pointer to the array of float elements.

float *get()

Returns the pointer to the vector.

Return value

Pointer to the vector.

const float *get() const

Returns the constant pointer to the vector.

Return value

Pointer to the vector.

floatlength()

Returns the length of the vector.

Vector length.

floatlength2()

Returns the squared length of the vector.

Return value

Squared length of the vector.

vec4 &normalize()

Returns normalized vector.

Return value

Normalized vector.

vec4 &normalize3()

Returns the vector with normalized XYZ components.

Return value

Vector with normalized XYZ components.

vec4 &normalizeFast()

Returns normalized vector, calculated using the fast inverse square root algorithm.

Return value

Normalized vector.

vec4 &normalizeFast3()

Returns the vector with XYZ components normalized using the fast inverse square root algorithm..

Return value

Vector with normalized XYZ components.

__m128operator __m128()

Performs type conversion to __m128.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

const float *operator const float *()

Performs type conversion to const float *.

const void *operator const void *()

Performs type conversion to const void *.

float *operator float *()

Performs type conversion to float *.

void *operator void *()

Performs type conversion to void *.

vec4 &operator*=(float val)

Performs scalar multiplication.

Arguments

• float val - Scalar value.

Return value

Resulting vector.

vec4 &operator*=(const vec4 & val)

Performs vector multiplication.

Arguments

• const vec4 & val - Vector.

Return value

Resulting vector.

vec4 &operator+=(const vec4 & val)

Arguments

• const vec4 & val - Vector.

Return value

Resulting vector.

vec4operator-() const

Performs vector negation.

Return value

Resulting vector.

vec4 &operator-=(const vec4 & val)

Performs vector subtraction.

Arguments

• const vec4 & val - Vector.

Return value

Resulting vector.

vec4 &operator/=(float val)

Performs componentwise division of the vector by the scalar. Implemented using the calculation of inverse scalar value with subsequent by-component multiplication.

Arguments

• float val - Scalar value.

Return value

Resulting vector.

Examples

Source code (UnigineScript)
``````vec4 a = vec4(6.0, 10.0, 12.0, 25.0);
a /= 2.0;
/*
Initial value of vector a:
a (6.0, 10.0, 12.0, 25.0)

a /= 2.0;
Vector a after operation:
a (3.0, 5.0, 6.0, 12.5)
*/``````

vec4 &operator/=(const vec4 & val)

Performs componentwise division of vectors.

Arguments

• const vec4 & val - Vector.

Return value

Resulting vector.

Examples

Source code (UnigineScript)
``````vec4 a, b;
a = vec4(6.0, 10.0, 12.0, 25.0);
b = vec4(2.0, 5.0, 6.0, 5.0);
a /= b;
/*
Initial values of vectors a and b:
a (6.0, 10.0, 12.0, 25.0)
b (2.0, 5.0, 6.0, 5.0)

a /= b;
Vector a after operation:
a (3.0, 2.0, 2.0, 5.0)
*/``````

vec4 &operator=(const __m128 & val)

Sets the vector using a given 128-bit variable as a source.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

• const __m128 & val - 128-bit variable.

Vector.

vec4 &operator=(const vec4 & val)

Performs vector assignment. Destination vector = Source vector.

Arguments

• const vec4 & val - Source vector.

Result.

float &operator[](int i)

Performs array access to the vector item reference by using given item index.

Arguments

• int i - Vector item index.

Return value

Vector item reference.

floatoperator[](int i) const

Performs array access to the vector item by using given item index.

Arguments

• int i - Vector item index.

Vector item.

__m128sse()

Returns vector components as a 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Return value

128-bit variable.

voidsse(const __m128 & val)

Sets the vector using a given 128-bit variable as a source.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

• const __m128 & val - 128-bit variable.

vec4 BLUE

Description

Blue color vector (0, 0, 1 1).

vec4 BLACK

Description

Black color vector (0, 0, 0 0).

vec4 EPS

Description

Vector, filled with epsilon constant (1e-6f).

vec4 GREEN

Description

Green color vector (0, 1, 0 1).

vec4 INF

Description

Vector, filled with infinity constant (1e+9f).

vec4 ONE

Description

Vector, filled with ones (1).

vec4 RED

Description

Red color vector (1, 0, 0 1).

vec4 WHITE

Description

White color vector (1, 1, 1 1).

vec4 ZERO

Description

Vector, filled with zeros (0).
Last update: 10.08.2018