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. | |
T | 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 | |
T | x {} |
X coordinate of the vector. | |
T | y {} |
Y coordinate of the vector. | |
T | 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
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:
sf::Vector3<float>
issf::Vector3f
sf::Vector3<int>
issf::Vector3i
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:
Note: for 2-dimensional vectors, see sf::Vector2
.
Definition at line 38 of file Vector3.hpp.
Constructor & Destructor Documentation
◆ Vector3() [1/2]
|
constexprdefault |
Default constructor.
Creates a Vector3(0, 0, 0)
.
◆ Vector3() [2/2]
|
constexpr |
Construct the vector from its coordinates.
- Parameters
-
x X coordinate y Y coordinate z Z coordinate
Member Function Documentation
◆ componentWiseDiv()
|
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()
|
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()
|
nodiscardconstexpr |
Cross product of two 3D vectors.
◆ dot()
|
nodiscardconstexpr |
Dot product of two 3D vectors.
◆ length()
|
nodiscard |
Length of the vector (floating-point).
If you are not interested in the actual length, but only in comparisons, consider using lengthSquared()
.
◆ lengthSquared()
|
nodiscardconstexpr |
Square of vector's length.
Suitable for comparisons, more efficient than length()
.
◆ normalized()
|
nodiscard |
Vector with same direction but length 1 (floating-point).
- Precondition
*this
is no zero vector.
◆ operator Vector3< U >()
|
explicitconstexpr |
Converts the vector to another type of vector.
Friends And Related Symbol Documentation
◆ operator!=()
|
related |
Overload of binary operator!=
This operator compares strict difference between two vectors.
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
true
ifleft
is not equal toright
◆ operator*() [1/2]
Overload of binary operator*
- Parameters
-
left Left operand (a vector) right Right operand (a scalar value)
- Returns
- Member-wise multiplication by
right
◆ operator*() [2/2]
Overload of binary operator*
- Parameters
-
left Left operand (a scalar value) right Right operand (a vector)
- Returns
- Member-wise multiplication by
left
◆ operator*=()
Overload of binary operator*=
This operator performs a member-wise multiplication by right
, and assigns the result to left
.
- Parameters
-
left Left operand (a vector) right Right operand (a scalar value)
- Returns
- Reference to
left
◆ operator+()
|
related |
Overload of binary operator+
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
- Member-wise addition of both vectors
◆ operator+=()
|
related |
Overload of binary operator+=
This operator performs a member-wise addition of both vectors, and assigns the result to left
.
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
- Reference to
left
◆ operator-() [1/2]
Overload of unary operator-
- Parameters
-
left Vector to negate
- Returns
- Member-wise opposite of the vector
◆ operator-() [2/2]
|
related |
Overload of binary operator-
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
- Member-wise subtraction of both vectors
◆ operator-=()
|
related |
Overload of binary operator-=
This operator performs a member-wise subtraction of both vectors, and assigns the result to left
.
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
- Reference to
left
◆ operator/()
Overload of binary operator/
- Parameters
-
left Left operand (a vector) right Right operand (a scalar value)
- Returns
- Member-wise division by
right
◆ operator/=()
Overload of binary operator/=
This operator performs a member-wise division by right
, and assigns the result to left
.
- Parameters
-
left Left operand (a vector) right Right operand (a scalar value)
- Returns
- Reference to
left
◆ operator==()
|
related |
Overload of binary operator==
This operator compares strict equality between two vectors.
- Parameters
-
left Left operand (a vector) right Right operand (a vector)
- Returns
true
ifleft
is equal toright
Member Data Documentation
◆ x
T sf::Vector3< T >::x {} |
X coordinate of the vector.
Definition at line 128 of file Vector3.hpp.
◆ y
T sf::Vector3< T >::y {} |
Y coordinate of the vector.
Definition at line 129 of file Vector3.hpp.
◆ z
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: