shz::vec4
4D Vector type
C++ structure for representing a 4-dimensional vector.
- Header:
#include <sh4zam/shz_vector.hpp>(source) - C type:
shz_vec4_t(layout-compatible; the C API accepts it directly) - Bases:
shz::vecN< vec4, shz_vec4_t, 4 >
Static functions
Section titled “Static functions”static CppType shz::vecN< CRTP, C, R >::from(const auto &raw) noexceptConversion operator for going from a layout-compatible vector type to a SH4ZAM vector type.
Inherited from shz::vecN.
static CppType shz::vecN< CRTP, C, R >::lerp(const CppType &start, const CppType &end, float t) noexceptReturns the vector that is linearly interpolated between the two given vectors by the 0.0f-1.0f factor, t.
Calls: shz_vec4_lerp() (inherited from shz::vecN)
smoothstep
Section titled “smoothstep”static CppType shz::vecN< CRTP, C, R >::smoothstep(const CppType &vec, T &&edge0, T &&edge1) noexceptReturns a vector where each component is smoothly interpolated from 0 to 1 between edge0 and edge1.
Calls: shz_vec4_smoothstep() (inherited from shz::vecN)
smoothstep_safe
Section titled “smoothstep_safe”static CppType shz::vecN< CRTP, C, R >::smoothstep_safe(const CppType &vec, T &&edge0, T &&edge1) noexceptReturns a vector where each component is smoothly interpolated from 0 to 1 between edge0 and edge1.
Calls: shz_vec4_smoothstep_safe() (inherited from shz::vecN)
static CppType shz::vecN< CRTP, C, R >::step(const CppType &vec, T &&edge) noexceptCompares each component of the vector to the edge. 0 returned in that component if x[i] < edge. Otherwise the component is 1.
Calls: shz_vec4_step() (inherited from shz::vecN)
Members
Section titled “Members”vec4()=defaultvec4(const shz_vec4_t &other) noexceptvec4(float v) noexceptvec4(float x, float y, float z, float w) noexceptvec4(const shz::vec2 &xy, float z, float w) noexceptvec4(float x, const shz::vec2 &yz, float w) noexceptvec4(float x, float y, const shz::vec2 &zw) noexceptvec4(const shz::vec2 &xy, const shz::vec2 &zw) noexceptvec4(const shz::vec3 &xyz, float w) noexceptvec4(float x, const shz::vec3 &yzw) noexceptDefault constructor: does nothing.
vec2 xy() const noexceptvec2 zw() const noexceptvec3 xyz() const noexceptshz::vecN< CRTP, C, R >::vecN() noexcept=defaultshz::vecN< CRTP, C, R >::vecN(const vecN &other) noexcept=defaultshz::vecN< CRTP, C, R >::vecN(const CType &other) noexceptshz::vecN< CRTP, C, R >::vecN(const volatile CType &other) noexceptDefault constructor, does nothing.
float shz::vecN< CRTP, C, R >::dot(const CppType &other) const noexceptvec2 shz::vecN< CRTP, C, R >::dot(const CppType &v1, const CppType &v2) const noexceptvec3 shz::vecN< CRTP, C, R >::dot(const CppType &v1, const CppType &v2, const CppType &v3) const noexceptReturns the dot product of the given vector and another.
CppType shz::vecN< CRTP, C, R >::abs() const noexceptReturns a new vector whose components are the absolute value of the given vector.
Calls: shz_vec4_abs() (inherited from shz::vecN)
angle_between
Section titled “angle_between”float shz::vecN< CRTP, C, R >::angle_between(const CppType &other) const noexceptReturns the angle between the given vector and another, in radians.
Calls: shz_vec_angle_between() (inherited from shz::vecN)
angles
Section titled “angles”auto shz::vecN< CRTP, C, R >::angles() const noexceptReturns the angle(s) created between the given vector axis and the +X axis, in radians.
Calls: shz_vec_angles() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::ceil() const noexceptReturns a new vector with the component-wise ceil of the given vector.
Calls: shz_vec4_ceil() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::clamp(float min, float max) const noexceptReturns a new vector whose values are the clamped components of the given vector.
Calls: shz_vec4_clamp() (inherited from shz::vecN)
CppType & shz::vecN< CRTP, C, R >::deref(const auto *raw) noexceptConversion operator for accessing an existing pointer type as though it were a refrence to a SH4ZAM type.
Inherited from shz::vecN.
direction
Section titled “direction”CppType shz::vecN< CRTP, C, R >::direction() const noexceptReturns the direction vector resulting from normalizing the given vector.
Calls: shz_vec4_normalize() (inherited from shz::vecN)
direction_safe
Section titled “direction_safe”CppType shz::vecN< CRTP, C, R >::direction_safe() const noexceptReturns the direction vector of a given vector, safely protecting against division-by-zero.
Calls: shz_vec4_normalize_safe() (inherited from shz::vecN)
distance
Section titled “distance”float shz::vecN< CRTP, C, R >::distance(const CppType &other) const noexceptReturns the magnitude of the difference between two vectors as their distance.
Calls: shz_vec4_distance() (inherited from shz::vecN)
distance_sqr
Section titled “distance_sqr”float shz::vecN< CRTP, C, R >::distance_sqr(const CppType &other) const noexceptReturns the value of the distance between two vectors squared (faster than actual distance).
Calls: shz_vec4_distance_sqr() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::floor() const noexceptReturns a new vector with the component-wise floor of the given vector.
Calls: shz_vec4_floor() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::fract() const noexceptReturns a new vector with the fractional part of each component.
Calls: shz_vec4_fract() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::inv() const noexceptReturns a new vector whose components are the reciprocal values of the given vector.
Calls: shz_vec4_inv() (inherited from shz::vecN)
inv_sqrtf
Section titled “inv_sqrtf”CppType shz::vecN< CRTP, C, R >::inv_sqrtf() const noexceptReturns a new vector whose components are the inverse square root of the given vector.
Calls: shz_vec4_inv_sqrtf() (inherited from shz::vecN)
magnitude
Section titled “magnitude”float shz::vecN< CRTP, C, R >::magnitude() const noexceptReturns the magnitude of the given vector.
Calls: shz_vec4_magnitude() (inherited from shz::vecN)
magnitude_inv
Section titled “magnitude_inv”float shz::vecN< CRTP, C, R >::magnitude_inv() const noexceptReturns the inverse magnitude of the given vector.
Calls: shz_vec4_magnitude_inv() (inherited from shz::vecN)
magnitude_sqr
Section titled “magnitude_sqr”float shz::vecN< CRTP, C, R >::magnitude_sqr() const noexceptReturns the squared magnitude of the given vector.
Calls: shz_vec4_magnitude_sqr() (inherited from shz::vecN)
float shz::vecN< CRTP, C, R >::max() const noexceptReturns the maximum value of every element within the vector.
Calls: shz_vec4_max() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::maxv(const CppType &other) const noexceptReturns a new vector with the component-wise maximum of two vectors.
Calls: shz_vec4_maxv() (inherited from shz::vecN)
float shz::vecN< CRTP, C, R >::min() const noexceptReturns the minimum value of every element within the vector.
Calls: shz_vec4_min() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::minv(const CppType &other) const noexceptReturns a new vector with the component-wise minimum of two vectors.
Calls: shz_vec4_minv() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::move(const CppType &target, float maxdist) const noexceptMoves the given vector towards the target by the given maxdist.
Calls: shz_vec4_move() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::neg() const noexceptReturns a new vector whose components are the negative values of the given vector.
Calls: shz_vec4_neg() (inherited from shz::vecN)
normalize
Section titled “normalize”void shz::vecN< CRTP, C, R >::normalize() noexceptNormalizes the given vector.
Calls: shz_vec4_normalize() (inherited from shz::vecN)
normalize_safe
Section titled “normalize_safe”void shz::vecN< CRTP, C, R >::normalize_safe() noexceptNormalizes the given vector, safely protecting against division-by-zero.
Calls: shz_vec4_normalize_safe() (inherited from shz::vecN)
normalized
Section titled “normalized”CppType shz::vecN< CRTP, C, R >::normalized() const noexceptReturn the normalized vector.
Calls: shz_vec4_normalize() (inherited from shz::vecN)
normalized_safe
Section titled “normalized_safe”CppType shz::vecN< CRTP, C, R >::normalized_safe() const noexceptReturn the normalized vector, safely protecting against division-by-zero.
Calls: shz_vec4_normalize_safe() (inherited from shz::vecN)
operator*=
Section titled “operator*=”CppType & shz::vecN< CRTP, C, R >::operator*=(const CppType &other) noexceptOverloaded multiplication assignment operator, multiplies and accumulates a vector onto the left-hand vector.
Inherited from shz::vecN.
operator+=
Section titled “operator+=”CppType & shz::vecN< CRTP, C, R >::operator+=(const CppType &other) noexceptOverloaded operator for adding and accumulating a vector onto another.
Inherited from shz::vecN.
operator-=
Section titled “operator-=”CppType & shz::vecN< CRTP, C, R >::operator-=(const CppType &other) noexceptOverloaded subtraction assignment operator, subtracts a vector from the left-hand vector.
Inherited from shz::vecN.
operator/=
Section titled “operator/=”CppType & shz::vecN< CRTP, C, R >::operator/=(const CppType &other) noexceptOverloaded division assignment operator, divides the left vector by the right, assigning the left to the result.
Inherited from shz::vecN.
project
Section titled “project”CppType shz::vecN< CRTP, C, R >::project(const CppType &onto) const noexceptReturns the vector created from projecting the given vector onto another.
Calls: shz_vec4_project() (inherited from shz::vecN)
project_safe
Section titled “project_safe”CppType shz::vecN< CRTP, C, R >::project_safe(const CppType &onto) const noexceptReturns the vector created from projecting the given vector onto another, safely protecting against division-by-zero.
Calls: shz_vec4_project_safe() (inherited from shz::vecN)
reflect
Section titled “reflect”CppType shz::vecN< CRTP, C, R >::reflect(const CppType &normal) const noexceptReturns the vector created from reflecting the given vector over the normal of a surface.
Calls: shz_vec4_reflect() (inherited from shz::vecN)
refract
Section titled “refract”CppType shz::vecN< CRTP, C, R >::refract(const CppType &normal, float eta) const noexceptReturns the vector create from refracting the given incidence vector over the normal of a surface, using the given refraction ratio index.
Calls: shz_vec4_refract() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::round() const noexceptReturns a new vector with the component-wise rounding of the given vector.
Calls: shz_vec4_round() (inherited from shz::vecN)
saturate
Section titled “saturate”CppType shz::vecN< CRTP, C, R >::saturate() const noexceptReturns a new vector with each component clamped to [0, 1].
Calls: shz_vec4_saturate() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::sign() const noexceptReturns a new vector with the sign of each component (-1, 0, or 1).
Calls: shz_vec4_sign() (inherited from shz::vecN)
CppType shz::vecN< CRTP, C, R >::sqrtf() const noexceptReturns a new vector whose components are the square root of the given vector.
Calls: shz_vec4_sqrtf() (inherited from shz::vecN)
swizzle
Section titled “swizzle”CppType shz::vecN< CRTP, C, R >::swizzle() const noexceptSwizzle oeprator which takes a compile-time list of indices as non-type template arguments for the index each element should use as its new value.
Calls: shz_vec4_swizzle() (inherited from shz::vecN)
T shz::vecN< CRTP, C, R >::to() const noexceptConversion operator for going from a SH4ZAM vector type to another layout-compatible type.
Inherited from shz::vecN.