#include <vector.h>
A vector consisting of three components X, Y and Z.
Public Types | |
template<typename U > | |
using | Rebind = Vec2< U, STRIDE > |
using | VectorStrideType = std::integral_constant< Int, STRIDE > |
using | ValueType = T |
using | ValueTypeParam = typename ByValueParam< T >::type |
using | Unstrided = Vec2< T, 1 > |
using | BoolType = decltype(T()==T()) |
Public Member Functions | |
constexpr | Vec2 () |
constexpr | Vec2 (ValueTypeParam in) |
constexpr | Vec2 (ValueTypeParam ix, ValueTypeParam iy) |
template<typename T2 , Int S2> | |
constexpr | Vec2 (const Vec2< T2, S2 > &v) |
template<Int S2> | |
constexpr | Vec2 (const Vec2< T, S2 > &v) |
template<typename T2 , Int S2> | |
constexpr | Vec2 (const Vec3< T2, S2 > &v) |
constexpr | Vec2 (ENUM_DONT_INITIALIZE v) |
constexpr MAXON_IMPLICIT | Vec2 (const typename std::conditional< STRIDE==1, DummyParamType, Vec2 >::type &src) |
constexpr Vec2 & | operator= (const typename std::conditional< STRIDE==1, DummyParamType, Vec2 >::type &src) |
T & | operator[] (Int l) |
ValueTypeParam | operator[] (Int l) const |
template<typename T2 , Int S2> | |
constexpr Vec2 & | operator+= (const Vec2< T2, S2 > &v) |
constexpr Vec2 & | operator+= (const Vec2 &v) |
template<typename T2 , Int S2> | |
constexpr Vec2 & | operator-= (const Vec2< T2, S2 > &v) |
constexpr Vec2 & | operator-= (const Vec2 &v) |
template<typename T2 , Int S2> | |
constexpr Vec2 & | operator*= (const Vec2< T2, S2 > &v) |
constexpr Vec2 & | operator*= (const Vec2 &v) |
constexpr Vec2 & | operator*= (ValueTypeParam s) |
constexpr Vec2 & | operator/= (ValueTypeParam s) |
constexpr Unstrided | operator* (ValueTypeParam s) const |
template<typename S > | |
constexpr Vec2< typename MultiplicativePromotion< T, S, STD_IS_REPLACEMENT(scalar, S)>::type, 1 > | operator* (S s) const |
constexpr Unstrided | operator/ (ValueTypeParam s) const |
constexpr Unstrided | operator* (const Vec2 &v) const |
constexpr Unstrided | operator+ (const Vec2 &v) const |
constexpr Unstrided | operator- (const Vec2 &v) const |
constexpr Unstrided | operator- () const |
template<typename T2 , Int S2> | |
constexpr BoolType | operator== (const Vec2< T2, S2 > &v) const |
constexpr BoolType | operator== (const Vec2 &v) const |
template<typename T2 , Int S2> | |
constexpr BoolType | operator!= (const Vec2< T2, S2 > &v) const |
constexpr BoolType | operator!= (const Vec2 &v) const |
constexpr BoolType | LessThanOrEqual (const Vec2 &v) const |
constexpr BoolType | LessThan (const Vec2 &v) const |
constexpr HashInt | GetHashCode () const |
constexpr BoolType | IsEqual (const Vec2 &other, ValueTypeParam epsilon) const |
constexpr BoolType | IsZero () const |
constexpr void | SetZero () |
constexpr T | GetAverage () const |
constexpr T | GetSum () const |
constexpr void | ClampMin (const Vec2 &other=Vec2()) |
constexpr void | ClampMax (const Vec2 &other) |
constexpr Unstrided | Clamp01 () const |
constexpr T | GetLength () const |
constexpr T | GetSquaredLength () const |
constexpr Unstrided | GetNormalized () const |
constexpr Unstrided | operator! () const |
constexpr void | Normalize () |
String | ToString (const FormatStatement *formatStatement=nullptr) const |
constexpr T | GetMin () const |
constexpr T | GetMax () const |
constexpr Unstrided | GetRightRotated (Int rots) const |
template<typename T2 > | |
constexpr Vec2 & | operator*= (const Mat2< T2 > &m) |
Static Public Member Functions | |
static constexpr const Vec2 & | NullValue () |
Public Attributes | |
union { | |
T x | |
T _xpadding [STRIDE] | |
}; | |
union { | |
T y | |
T _ypadding [STRIDE] | |
}; | |
Friends | |
constexpr friend Unstrided | operator* (ValueTypeParam s, const Vec2 &v) |
constexpr friend T | Dot (const Vec2 &v1, const Vec2 &v2) |
constexpr friend Unstrided | Abs (const Vec2 &v1) |
template<typename T2 , Int S2> | |
constexpr friend MultiplicativePromotion< T, T2 >::type | Dot (const Vec2 &v1, const Vec2< T2, S2 > &v2) |
constexpr friend Unstrided | Min (const Vec2 &a, const Vec2 &other) |
constexpr friend Unstrided | Max (const Vec2 &a, const Vec2 &other) |
constexpr friend void | SetMin (Vec2 &a, const Vec2 &other) |
constexpr friend void | SetMax (Vec2 &a, const Vec2 &other) |
constexpr friend T | GetAngle (const Vec2 &v1, const Vec2 &v2) |
constexpr friend Unstrided | Cross (const Vec2 &v1) |
using VectorStrideType = std::integral_constant<Int, STRIDE> |
using ValueType = T |
using ValueTypeParam = typename ByValueParam<T>::type |
using BoolType = decltype(T() == T()) |
The type returned by comparisons. If the template argument for T is a SIMD type, this will be a SIMD type, too, which contains the per-element results.
|
constexpr |
Initializes all vector components with 0.0.
|
explicitconstexpr |
Initializes all vector components with a scalar.
|
explicitconstexpr |
Initializes all vector components individually.
Initializes components from another 2d vector.
Initializes components from a 3d vector. The z-component of v is ignored.
|
explicitconstexpr |
Skips initialization of vector (for better speed)
|
constexpr |
When STRIDE is not 1, we have to provide copy constructor and operator because the default ones would also copy the padding. When STRIDE is 1, we want to avoid to declare them (because then the type wouldn't be trivially copyable any longer), so we use DummyParamType for the parameter in that case.
|
constexpr |
Copies the source vector.
[in] | src | Source vector. |
T& operator[] | ( | Int | l | ) |
Accesses vector component: index 0 is 'x', index 1 is 'y'. All other values must not be used and will crash.
ValueTypeParam operator[] | ( | Int | l | ) | const |
Accesses vector component: index 0 is 'x', index 1 is 'y'. All other values must not be used and will crash.
Adds a vector. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector.
[in] | v | Vector to be added. |
Subtracts a vector. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector.
[in] | v | Vector to be substracted from this. |
Multiplies two vectors component-wise.
Multiplies with vector component-wise. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector.
[in] | v | Vector to be multiplied with. |
|
constexpr |
Multiplies each vector component by a scalar.
|
constexpr |
Divides each vector component by a scalar. The passed argument is checked for 0.0.
|
constexpr |
Multiplies each vector component by a scalar.
|
constexpr |
Multiplies each vector component by a scalar.
|
constexpr |
Divides each vector component by a scalar. The scalar value is tested for 0.0.
Multiplies two vectors component-wise.
Subtracts vector v2 from v1.
|
constexpr |
Negates vector v.
Equality operator. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector
[in] | v | Comparison vector. |
Equality operator. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector
[in] | v | Comparison vector. |
Inequality operator.
[in] | v | Comparison vector. |
Inequality operator. We repeat the function template as non-template function, this allows the usage in contexts where the parameter is not a vector itself, but something with a conversion operator to a vector
[in] | v | Comparison vector. |
|
constexpr |
Returns the hash code of the vector (used for hash maps and comparisons).
|
constexpr |
Tests component-wise if the difference is no bigger than 'epsilon'.
|
constexpr |
Checks if each component is zero.
|
constexpr |
Sets all components to zero.
|
constexpr |
Calculates the average value of 'x', 'y' and 'z'.
|
constexpr |
Calculates the sum of 'x', 'y' and 'z'.
Set the minimum of each component.
Set the maximum of each component.
|
constexpr |
Returns a vector that is clamped to the range [0.0 .. 1.0].
|
constexpr |
Returns the length of the vector.
|
constexpr |
Returns the squared length of the vector.
|
constexpr |
Returns a normalized vector, so that GetLength(vector)==1.0.
|
constexpr |
Returns a normalized vector, so that GetLength(vector)==1.0.
|
constexpr |
Normalizes this vector, so that GetLength()==1.0.
String ToString | ( | const FormatStatement * | formatStatement = nullptr | ) | const |
Returns a readable string of the content.
[in] | formatStatement | Nullptr or additional formatting instruction. See also Formatting Floating point values. |
|
constexpr |
Returns the minimum of 'x' and 'y'.
|
constexpr |
Returns the maximum of 'x' and 'y'.
Returns a vector where the components have been rotated to the right (in the usual (x, y)-representation). E.g., with a value of 1 for rots, the result will be (y, x).
[in] | rots | Number of rotations, may be negative. The result depends only on the number modulo 2. |
|
staticconstexpr |
Returns a null value of the vector (see nullvalue.h for more details).
|
friend |
Multiplies each vector component by a scalar.
Calculates dot product of v1 and v2.
returns the vector with absolute value for each entry
[in] | v1 | input vector to work on |
|
friend |
Calculates dot product of v1 and v2.
|
friend |
Calculates the minimum of each component.
|
friend |
Calculates the maximum of each component.
Set the minimum of each component.
Set the maximum of each component.
Calculates angle (in radians) between v1 and v2.
Calculates the cross product of a 2d vector. This is the vector (Y, -X), i.e., the clockwise rotation by 90 degrees.
T x |
T _xpadding[STRIDE] |
union { ... } |
T y |
T _ypadding[STRIDE] |
union { ... } |