HDK
|
#include <vec3f.h>
Public Types | |
typedef float | ScalarType |
Scalar element type and dimension. More... | |
Public Member Functions | |
GfVec3f ()=default | |
Default constructor does no initialization. More... | |
constexpr | GfVec3f (float value) |
Initialize all elements to a single value. More... | |
constexpr | GfVec3f (float s0, float s1, float s2) |
Initialize all elements with explicit arguments. More... | |
template<class Scl > | |
constexpr | GfVec3f (Scl const *p) |
Construct with pointer to values. More... | |
GfVec3f (class GfVec3d const &other) | |
Construct from GfVec3d. More... | |
GfVec3f (class GfVec3h const &other) | |
Implicitly convert from GfVec3h. More... | |
GfVec3f (class GfVec3i const &other) | |
Implicitly convert from GfVec3i. More... | |
GfVec3f & | Set (float s0, float s1, float s2) |
Set all elements with passed arguments. More... | |
GfVec3f & | Set (float const *a) |
Set all elements with a pointer to data. More... | |
float const * | data () const |
Direct data access. More... | |
float * | data () |
float const * | GetArray () const |
float const & | operator[] (size_t i) const |
Indexing. More... | |
float & | operator[] (size_t i) |
bool | operator== (GfVec3f const &other) const |
Equality comparison. More... | |
bool | operator!= (GfVec3f const &other) const |
GF_API bool | operator== (class GfVec3d const &other) const |
Equality comparison. More... | |
GF_API bool | operator== (class GfVec3h const &other) const |
Equality comparison. More... | |
GF_API bool | operator== (class GfVec3i const &other) const |
Equality comparison. More... | |
GfVec3f | operator- () const |
Create a vec with negated elements. More... | |
GfVec3f & | operator+= (GfVec3f const &other) |
Addition. More... | |
GfVec3f & | operator-= (GfVec3f const &other) |
Subtraction. More... | |
GfVec3f & | operator*= (double s) |
Multiplication by scalar. More... | |
GfVec3f | operator* (double s) const |
GfVec3f & | operator/= (double s) |
Division by scalar. More... | |
GfVec3f | operator/ (double s) const |
float | operator* (GfVec3f const &v) const |
See GfDot(). More... | |
GfVec3f | GetProjection (GfVec3f const &v) const |
GfVec3f | GetComplement (GfVec3f const &b) const |
float | GetLengthSq () const |
Squared length. More... | |
float | GetLength () const |
Length. More... | |
float | Normalize (float eps=GF_MIN_VECTOR_LENGTH) |
GfVec3f | GetNormalized (float eps=GF_MIN_VECTOR_LENGTH) const |
GF_API void | BuildOrthonormalFrame (GfVec3f *v1, GfVec3f *v2, float eps=GF_MIN_VECTOR_LENGTH) const |
Static Public Member Functions | |
static GfVec3f | XAxis () |
Create a unit vector along the X-axis. More... | |
static GfVec3f | YAxis () |
Create a unit vector along the Y-axis. More... | |
static GfVec3f | ZAxis () |
Create a unit vector along the Z-axis. More... | |
static GfVec3f | Axis (size_t i) |
static GF_API bool | OrthogonalizeBasis (GfVec3f *tx, GfVec3f *ty, GfVec3f *tz, const bool normalize, double eps=GF_MIN_ORTHO_TOLERANCE) |
Static Public Attributes | |
static const size_t | dimension = 3 |
Friends | |
size_t | hash_value (GfVec3f const &vec) |
Hash. More... | |
GfVec3f | operator+ (GfVec3f const &l, GfVec3f const &r) |
GfVec3f | operator- (GfVec3f const &l, GfVec3f const &r) |
GfVec3f | operator* (double s, GfVec3f const &v) |
Basic type for a vector of 3 float components.
Represents a vector of 3 components of type float
. It is intended to be fast and simple.
typedef float GfVec3f::ScalarType |
|
default |
Default constructor does no initialization.
|
inlineexplicit |
|
inlineexplicit |
|
inlineexplicit |
|
inlinestatic |
GF_API void GfVec3f::BuildOrthonormalFrame | ( | GfVec3f * | v1, |
GfVec3f * | v2, | ||
float | eps = GF_MIN_VECTOR_LENGTH |
||
) | const |
Sets v1
and v2
to unit vectors such that v1, v2 and *this are mutually orthogonal. If the length L of *this is smaller than eps
, then v1 and v2 will have magnitude L/eps. As a result, the function delivers a continuous result as *this shrinks in length.
|
inline |
Returns the orthogonal complement of this->GetProjection(b)
. That is:
|
inline |
|
inline |
Normalizes the vector in place to unit length, returning the length before normalization. If the length of the vector is smaller than eps
, then the vector is set to vector/eps
. The original length of the vector is returned. See also GfNormalize().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
Orthogonalize and optionally normalize a set of basis vectors. This uses an iterative method that is very stable even when the vectors are far from orthogonal (close to colinear). The number of iterations and thus the computation time does increase as the vectors become close to colinear, however. Returns a bool specifying whether the solution converged after a number of iterations. If it did not converge, the returned vectors will be as close as possible to orthogonal within the iteration limit. Colinear vectors will be unaltered, and the method will return false.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |