Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
CIGI Client Plugin
Rendering-Related Classes

Unigine::Unigine::dvec3 Struct

Header:#include <UnigineMathLib.h>

This class represents a vector of 3 double components.

dvec3 Class

Members


dvec3(const hvec3 & v)

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

Arguments

  • const hvec3 & v - Source vector.

dvec3()

Default constructor. Produces a zero vector.

dvec3(const dvec3 & v)

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

Arguments

  • const dvec3 & v - Source vector.

dvec3(const dvec2 & v, double z)

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

Arguments

  • const dvec2 & v - Two-component source vector.
  • double z - Z component of the vector.

dvec3(double x, double y, double z)

Constructor. Initializes the vector using given double values.

Arguments

  • double x - X component of the vector.
  • double y - Y component of the vector.
  • double z - Z component of the vector.

explicit dvec3(double v)

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

Arguments

  • double v - Scalar value.

explicit dvec3(const dvec2 & v)

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

Arguments

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

explicit dvec3(const dvec4 & v)

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

Arguments

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

explicit dvec3(const vec3 & v)

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

Arguments

  • const vec3 & v - Source vector.

explicit dvec3(const ivec3 & v)

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

Arguments

  • const ivec3 & v - Source vector.

explicit dvec3(const double * v)

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

Arguments

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

void set(double x_, double y_, double z_)

Sets the vector by components.

Arguments

  • double x_ - X component of the vector.
  • double y_ - Y component of the vector.
  • double z_ - Z component of the vector.

void set(const double * val)

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

Arguments

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

void set(const dvec2 & val, double z_)

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

Arguments

  • const dvec2 & val - Two-component source vector.
  • double z_ - Scalar.

void set(const dvec3 & val)

Sets the vector equal to the specified source vector.

Arguments

  • const dvec3 & val - Source vector.

void set(double val)

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

Arguments

  • double val - Scalar.

void get(double * val) const

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

Arguments

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

double * get()

Returns the pointer to the vector.

Return value

Pointer to the vector.

const double * get() const

Returns the constant pointer to the vector.

Return value

Pointer to the vector.

double length()

Returns the length of the vector.

Return value

Vector length.

double length2()

Returns the squared length of the vector.

Return value

Squared length of the vector.

dvec3 & normalize()

Returns normalized vector.

Return value

Normalized vector.

const double * operator const double *()

Performs type conversion to const double *.

const void * operator const void *()

Performs type conversion to const void *.

double * operator double *()

Performs type conversion to double *.

void * operator void *()

Performs type conversion to void *.

dvec3 & operator*=(double val)

Performs scalar multiplication.

Arguments

  • double val - Scalar value.

Return value

Resulting vector.

dvec3 & operator*=(const dvec3 & val)

Performs vector multiplication.

Arguments

  • const dvec3 & val - Vector.

Return value

Resulting vector.

dvec3 & operator+=(const dvec3 & val)

Performs vector addition.

Arguments

  • const dvec3 & val - Vector.

Return value

Resulting vector.

dvec3 operator-() const

Performs vector negation.

Return value

Resulting vector.

dvec3 & operator-=(const dvec3 & val)

Performs vector subtraction.

Arguments

  • const dvec3 & val - Vector.

Return value

Resulting vector.

dvec3 & operator/=(const dvec3 & val)

Performs componentwise division of vectors.

Arguments

  • const dvec3 & val - Vector.

Return value

Resulting vector.

Examples

Source code (UnigineScript)
dvec3 a, b;
a = dvec3(6.0, 10.0, 12.0);
b = dvec3(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)	
*/

dvec3 & operator/=(double val)

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

Arguments

  • double val - Scalar value.

Return value

Resulting vector.

Examples

Source code (UnigineScript)
dvec3 a = dvec3(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)	
*/

dvec3 & operator=(const dvec3 & val)

Performs vector assignment. Destination vector = Source vector.

Arguments

  • const dvec3 & val - Source vector.

Return value

Result.

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

double operator[](int i) const

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

Arguments

  • int i - Vector item index.

Return value

Vector item.

void sse(const __m128d & v0, const __m128d & v1)

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

Arguments

  • const __m128d & v0 - 128-bit variable containing the first two double components (X, Y) of the vector.
  • const __m128d & v1 - 128-bit variable containing the third double component (Z) of the vector.

__m128d sse0()

Returns the values of the first two double components (X, Y) of the vector 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 containing the first two double components (X, Y) of the vector.

void sse0(const __m128d & val)

Sets the values of the first two double components of the vector using a given 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128d & val - 128-bit variable containing the first two double components (X, Y) of the vector.

void sse1(const __m128d & val)

Sets the value of the third double component (Z) of the vector using a given 128-bit variable.
Notice
We do not recommend to use this method unless you have a clear understanding of SSE2.

Arguments

  • const __m128d & val - 128-bit variable containing the third double component (Z) of the vector.

__m128d sse1()

Returns the value of the third double component (Z) of the vector 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 containing the third double component (Z) of the vector.

vec3 BACK

Description

Vector (0.0, 1.0, 0.0).

vec3 DOWN

Description

Vector (0.0, 0.0, -1.0).

vec3 EPS

Description

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

vec3 FORWARD

Description

Vector (0.0, -1.0, 0.0).

vec3 INF

Description

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

vec3 LEFT

Description

Vector (1.0, 0.0, 0.0).

vec3 ONE

Description

Vector, filled with ones (1).

vec3 RIGHT

Description

Vector (-1.0, 0.0, 0.0).

vec3 UP

Description

Vector (0.0, 0.0, 1.0).

vec3 ZERO

Description

Vector, filled with zeros (0).
Last update: 2017-12-21