Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

Unigine::Math::vec3 Struct

This class represents a vector of 3 float components.

vec3 ( 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

vec3 ( const hvec3 & v ) #

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

Arguments

• const hvec3 & v - Source vector.

vec3 ( ) #

Default constructor. Produces a zero vector.

vec3 ( const vec3 & v ) #

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

Arguments

• const vec3 & v - Source vector.

vec3 ( const vec2 & v, float z ) #

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

Arguments

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

vec3 ( float x, float y, float z ) #

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.

explicit vec3 ( float v ) #

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

Arguments

• float v - Scalar value.

Examples

Source code (UnigineScript)
``````vec3(1.0);
/*
Creates a vector (1.0, 1.0, 1.0)
*/``````

explicit vec3 ( const vec2 & v ) #

Constructor. Initializes the vector using a given vec2 source vector: x=v.x, y=v.y, z=0.0f.

Arguments

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

explicit vec3 ( const vec4 & v ) #

Constructor. Initializes the vector using a given four-component vec4 source vector: x=v.x, y=v.y, z=v.z.

Arguments

• const vec4 & v - Four-component source vector.

explicit vec3 ( const dvec3 & v ) #

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

Arguments

• const dvec3 & v - Source vector.

explicit vec3 ( const ivec3 & v ) #

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

Arguments

• const ivec3 & v - Source vector.

explicit vec3 ( 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].

Arguments

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

vec3 ( 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.

vec3 &abs ( ) #

Returns the absolute values of the vector components.

Return value

Vector with absolute values.

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

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.

voidset ( const float * val ) #

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

Arguments

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

voidset ( const vec4 & v ) #

Sets the vector using a vec4 source vector: x=v.x, y=v.y, z=v.z.

Arguments

• const vec4 & v - Source vector.

voidset ( const vec2 & val, float z_ ) #

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

Arguments

• const vec2 & val - Two-component source vector.
• float z_ - Scalar.

voidset ( const vec3 & val ) #

Sets the vector equal to the specified source vector.

Arguments

• const vec3 & val - Source vector.

voidset ( float val ) #

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

Arguments

• float val - Scalar.

voidget ( float * val ) const#

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

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.

vec3lerp ( const vec3 & v0, const vec3 & v1, float k ) #

Returns the interpolated vector according to the following formula: v0 + (v 1 - v 0) * k .

Arguments

• const vec3 & v0 - First vector.
• const vec3 & v1 - Second vector.
• float k - Interpolation coefficient.

Return value

Interpolated vector.

floatmaxXY ( ) const#

Compares the X and Y components of the vector and returns the greater one.

Return value

The greater out of the X and Y components of the vector.

floatmax ( ) const#

Compares all vector components and returns the maximum value.

Return value

The greatest out of the vector components.

floatminXY ( ) #

Compares the X and Y components of the vector and returns the lower one.

Return value

The lower value out of the X and Y components of the vector.

vec3 &normalize ( ) #

Returns normalized vector.

Return value

Normalized vector.

vec3 &normalizeValid ( ) #

Normalizes a vector, makes its magnitude equal to 1. When normalized, a vector keeps the same direction but its length is equal to 1. Check for the zero vector is performed: if the argument is a zero vector, then a zero vector is returned.

Return value

Normalized vector.

vec3 &normalizeFast ( ) #

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

Return value

Normalized vector.

vec3 &normalizeValidFast ( ) #

Returns normalized vector, calculated using the fast inverse square root algorithm. Check for the zero vector is performed: if the argument is a zero vector, then a zero vector is returned.

Return value

Normalized vector.

vec3 &saturate ( ) #

Clamps the values of vector components within the range of 0.0 to 1.0.

Return value

Vector with components clamped within the range of 0.0 to 1.0.

__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 *.

vec3 &operator*= ( float val ) #

Performs scalar multiplication.

Arguments

• float val - Scalar value.

Return value

Resulting vector.

vec3 &operator*= ( const vec3 & val ) #

Performs vector multiplication.

Arguments

• const vec3 & val - Vector.

Return value

Resulting vector.

vec3 &operator+= ( const vec3 & val ) #

Arguments

• const vec3 & val - Vector.

Return value

Resulting vector.

vec3operator- ( ) const#

Performs vector negation.

Return value

Resulting vector.

vec3 &operator-= ( const vec3 & val ) #

Performs vector subtraction.

Arguments

• const vec3 & val - Vector.

Return value

Resulting vector.

vec3 &operator/= ( const vec3 & val ) #

Performs componentwise division of vectors.

Arguments

• const vec3 & val - Vector.

Return value

Resulting vector.

Examples

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

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

vec3 &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)
``````vec3 a = vec3(6.0, 10.0, 12.0);
a /= 2.0;
/*
Initial value of vector a:
a (6.0, 10.0, 12.0)

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

vec3 &operator= ( const vec3 & val ) #

Performs vector assignment. Destination vector = Source vector.

Arguments

• const vec3 & val - Source vector.

Result.

vec3 &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.

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.

vec3sign ( vec3 v ) const#

Returns the vector with signs of the argument components.

Arguments

• vec3 v - Argument.

Return value

Vector with signs of the argument components. 1.0 if v >= 0.0 ; -1.0 if v < 0.0.

__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.
Last update: 2021-04-29