Loading...
Searching...
No Matches

Utility template class for manipulating 3-dimensional vectors. More...

#include <SFML/System/Vector3.hpp>

Public Member Functions

constexpr Vector3 ()=default
 Default constructor.
 
constexpr Vector3 (T x, T y, T z)
 Construct the vector from its coordinates.
 
template<typename U >
constexpr operator Vector3< U > () const
 Converts the vector to another type of vector.
 
length () const
 Length of the vector (floating-point).
 
constexpr T lengthSquared () const
 Square of vector's length.
 
Vector3 normalized () const
 Vector with same direction but length 1 (floating-point).
 
constexpr T dot (const Vector3 &rhs) const
 Dot product of two 3D vectors.
 
constexpr Vector3 cross (const Vector3 &rhs) const
 Cross product of two 3D vectors.
 
constexpr Vector3 componentWiseMul (const Vector3 &rhs) const
 Component-wise multiplication of *this and rhs.
 
constexpr Vector3 componentWiseDiv (const Vector3 &rhs) const
 Component-wise division of *this and rhs.
 

Public Attributes

x {}
 X coordinate of the vector.
 
y {}
 Y coordinate of the vector.
 
z {}
 Z coordinate of the vector.
 

Related Symbols

(Note that these are not member symbols.)

template<typename T >
constexpr Vector3< T > operator- (const Vector3< T > &left)
 Overload of unary operator-
 
template<typename T >
constexpr Vector3< T > & operator+= (Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator+=
 
template<typename T >
constexpr Vector3< T > & operator-= (Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator-=
 
template<typename T >
constexpr Vector3< T > operator+ (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator+
 
template<typename T >
constexpr Vector3< T > operator- (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator-
 
template<typename T >
constexpr Vector3< T > operator* (const Vector3< T > &left, T right)
 Overload of binary operator*
 
template<typename T >
constexpr Vector3< T > operator* (T left, const Vector3< T > &right)
 Overload of binary operator*
 
template<typename T >
constexpr Vector3< T > & operator*= (Vector3< T > &left, T right)
 Overload of binary operator*=
 
template<typename T >
constexpr Vector3< T > operator/ (const Vector3< T > &left, T right)
 Overload of binary operator/
 
template<typename T >
constexpr Vector3< T > & operator/= (Vector3< T > &left, T right)
 Overload of binary operator/=
 
template<typename T >
constexpr bool operator== (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator==
 
template<typename T >
constexpr bool operator!= (const Vector3< T > &left, const Vector3< T > &right)
 Overload of binary operator!=
 

Detailed Description

template<typename T>
class sf::Vector3< T >

Utility template class for manipulating 3-dimensional vectors.

sf::Vector3 is a simple class that defines a mathematical vector with three coordinates (x, y and z).

It can be used to represent anything that has three dimensions: a size, a point, a velocity, etc.

The template parameter T is the type of the coordinates. It can be any type that supports arithmetic operations (+, -, /, *) and comparisons (==, !=), for example int or float. Note that some operations are only meaningful for vectors where T is a floating point type (e.g. float or double), often because results cannot be represented accurately with integers. The method documentation mentions "(floating-point)" in those cases.

You generally don't have to care about the templated form (sf::Vector3<T>), the most common specializations have special type aliases:

The sf::Vector3 class has a small and simple interface, its x, y and z members can be accessed directly (there are no accessors like setX(), getX()).

Usage example:

sf::Vector3f v(16.5f, 24.f, -3.2f);
v.x = 18.2f;
float y = v.y;
sf::Vector3f w = v * 5.f;
u = v + w;
float s = v.dot(w);
bool different = (v != u);
constexpr Vector3 cross(const Vector3 &rhs) const
Cross product of two 3D vectors.
constexpr T dot(const Vector3 &rhs) const
Dot product of two 3D vectors.
T y
Y coordinate of the vector.
Definition Vector3.hpp:129

Note: for 2-dimensional vectors, see sf::Vector2.

Definition at line 38 of file Vector3.hpp.

Constructor & Destructor Documentation

◆ Vector3() [1/2]

template<typename T >
sf::Vector3< T >::Vector3 ( )
constexprdefault

Default constructor.

Creates a Vector3(0, 0, 0).

◆ Vector3() [2/2]

template<typename T >
sf::Vector3< T >::Vector3 ( T x,
T y,
T z )
constexpr

Construct the vector from its coordinates.

Parameters
xX coordinate
yY coordinate
zZ coordinate

Member Function Documentation

◆ componentWiseDiv()

template<typename T >
Vector3 sf::Vector3< T >::componentWiseDiv ( const Vector3< T > & rhs) const
nodiscardconstexpr

Component-wise division of *this and rhs.

Computes (lhs.x/rhs.x, lhs.y/rhs.y, lhs.z/rhs.z).

Scaling is the most common use case for component-wise multiplication/division.

Precondition
Neither component of rhs is zero.

◆ componentWiseMul()

template<typename T >
Vector3 sf::Vector3< T >::componentWiseMul ( const Vector3< T > & rhs) const
nodiscardconstexpr

Component-wise multiplication of *this and rhs.

Computes (lhs.x*rhs.x, lhs.y*rhs.y, lhs.z*rhs.z).

Scaling is the most common use case for component-wise multiplication/division. This operation is also known as the Hadamard or Schur product.

◆ cross()

template<typename T >
Vector3 sf::Vector3< T >::cross ( const Vector3< T > & rhs) const
nodiscardconstexpr

Cross product of two 3D vectors.

◆ dot()

template<typename T >
T sf::Vector3< T >::dot ( const Vector3< T > & rhs) const
nodiscardconstexpr

Dot product of two 3D vectors.

◆ length()

template<typename T >
T sf::Vector3< T >::length ( ) const
nodiscard

Length of the vector (floating-point).

If you are not interested in the actual length, but only in comparisons, consider using lengthSquared().

◆ lengthSquared()

template<typename T >
T sf::Vector3< T >::lengthSquared ( ) const
nodiscardconstexpr

Square of vector's length.

Suitable for comparisons, more efficient than length().

◆ normalized()

template<typename T >
Vector3 sf::Vector3< T >::normalized ( ) const
nodiscard

Vector with same direction but length 1 (floating-point).

Precondition
*this is no zero vector.

◆ operator Vector3< U >()

template<typename T >
template<typename U >
sf::Vector3< T >::operator Vector3< U > ( ) const
explicitconstexpr

Converts the vector to another type of vector.

Friends And Related Symbol Documentation

◆ operator!=()

template<typename T >
bool operator!= ( const Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator!=

This operator compares strict difference between two vectors.

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
true if left is not equal to right

◆ operator*() [1/2]

template<typename T >
Vector3< T > operator* ( const Vector3< T > & left,
T right )
related

Overload of binary operator*

Parameters
leftLeft operand (a vector)
rightRight operand (a scalar value)
Returns
Member-wise multiplication by right

◆ operator*() [2/2]

template<typename T >
Vector3< T > operator* ( T left,
const Vector3< T > & right )
related

Overload of binary operator*

Parameters
leftLeft operand (a scalar value)
rightRight operand (a vector)
Returns
Member-wise multiplication by left

◆ operator*=()

template<typename T >
Vector3< T > & operator*= ( Vector3< T > & left,
T right )
related

Overload of binary operator*=

This operator performs a member-wise multiplication by right, and assigns the result to left.

Parameters
leftLeft operand (a vector)
rightRight operand (a scalar value)
Returns
Reference to left

◆ operator+()

template<typename T >
Vector3< T > operator+ ( const Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator+

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
Member-wise addition of both vectors

◆ operator+=()

template<typename T >
Vector3< T > & operator+= ( Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator+=

This operator performs a member-wise addition of both vectors, and assigns the result to left.

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
Reference to left

◆ operator-() [1/2]

template<typename T >
Vector3< T > operator- ( const Vector3< T > & left)
related

Overload of unary operator-

Parameters
leftVector to negate
Returns
Member-wise opposite of the vector

◆ operator-() [2/2]

template<typename T >
Vector3< T > operator- ( const Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator-

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
Member-wise subtraction of both vectors

◆ operator-=()

template<typename T >
Vector3< T > & operator-= ( Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator-=

This operator performs a member-wise subtraction of both vectors, and assigns the result to left.

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
Reference to left

◆ operator/()

template<typename T >
Vector3< T > operator/ ( const Vector3< T > & left,
T right )
related

Overload of binary operator/

Parameters
leftLeft operand (a vector)
rightRight operand (a scalar value)
Returns
Member-wise division by right

◆ operator/=()

template<typename T >
Vector3< T > & operator/= ( Vector3< T > & left,
T right )
related

Overload of binary operator/=

This operator performs a member-wise division by right, and assigns the result to left.

Parameters
leftLeft operand (a vector)
rightRight operand (a scalar value)
Returns
Reference to left

◆ operator==()

template<typename T >
bool operator== ( const Vector3< T > & left,
const Vector3< T > & right )
related

Overload of binary operator==

This operator compares strict equality between two vectors.

Parameters
leftLeft operand (a vector)
rightRight operand (a vector)
Returns
true if left is equal to right

Member Data Documentation

◆ x

template<typename T >
T sf::Vector3< T >::x {}

X coordinate of the vector.

Definition at line 128 of file Vector3.hpp.

◆ y

template<typename T >
T sf::Vector3< T >::y {}

Y coordinate of the vector.

Definition at line 129 of file Vector3.hpp.

◆ z

template<typename T >
T sf::Vector3< T >::z {}

Z coordinate of the vector.

Definition at line 130 of file Vector3.hpp.


The documentation for this class was generated from the following file: