37template <
typename DataType>
43 static bool eqTol(
float val ,
float eps = 1.e-8f) {
return (val < eps) && (val > -eps); }
44 static bool eqTol(
double val,
double eps = 1.e-10) {
return (val < eps) && (val > -eps); }
49 template <
typename VecType>
54 {
x = _x;
y = _y;
return *
this; }
55 template <
typename VecType>
57 {
x = (DataType)vec.
x;
y = (DataType)vec.y;
return *
this; }
61 {
return (!nAxis) ?
x :
y; }
63 {
return (!nAxis) ?
x :
y; }
79 {
x += vec.
x;
y += vec.
y;
return *
this; }
83 {
x -= vec.
x;
y -= vec.
y;
return *
this; }
87 {
return x * vec.
x +
y * vec.
y; }
89 {
return x * vec.
y -
y * vec.
x; }
97 {
x *= val;
y *= val;
return *
this; }
103 {
x /= val;
y /= val;
return *
this; }
113 {
x *= vec.
x;
y *= vec.
y;
return *
this; }
117 {
x /= vec.
x;
y /= vec.
y;
return *
this; }
121 {
x =
y = 0.0f;
return *
this; }
127 {
return x *
x +
y *
y; }
129 {
return (DataType)sqrt(
length2()); }
155template <
typename DataType>
165 template <
typename VecType>
173 template <
typename VecType>
247 {
return (DataType)sqrt(
length2()); }
270 {
return *
this = (*
this * (-2.0f * (*
this * n))).
mul(n) + *
this; }
274 {
const DataType idot = *
this * n;
275 const DataType k = 1.0f - eta * eta * (1.0f - idot * idot);
279 return *
this = *
this * eta - (n * (eta * idot + (DataType)sqrt(k)));
OdTrVisVector2df OdTrVisVector2d
OdTrVisMiniVec3d< float > OdTrVisVector3df
OdTrVisMiniVec3d< double > OdTrVisVector3dd
OdTrVisVector3df OdTrVisVector
OdTrVisMiniVec2d< float > OdTrVisVector2df
OdTrVisMiniVec2d< double > OdTrVisVector2dd
GLfloat GLfloat GLfloat z
OdTrVisMiniVec2d & setMul(const OdTrVisMiniVec2d &vec) const
bool operator==(const OdTrVisMiniVec2d &vec) const
OdTrVisMiniVec2d & operator*=(DataType val)
friend OdTrVisMiniVec2d operator*(const OdTrVisMiniVec2d &vec, DataType val)
OdTrVisMiniVec2d & operator-=(const OdTrVisMiniVec2d &vec)
bool operator!=(const OdTrVisMiniVec2d &vec) const
OdTrVisMiniVec2d & operator+=(const OdTrVisMiniVec2d &vec)
DataType operator^(const OdTrVisMiniVec2d &vec) const
OdTrVisMiniVec2d(DataType _x, DataType _y)
OdTrVisMiniVec2d div(const OdTrVisMiniVec2d &vec) const
bool isNull(DataType eps=1.e-8f) const
OdTrVisMiniVec2d(const VecType &vec)
OdTrVisMiniVec2d & negate()
DataType operator[](int nAxis) const
static bool eqTol(double val, double eps=1.e-10)
OdTrVisMiniVec2d & setNull()
OdTrVisMiniVec2d operator+(const OdTrVisMiniVec2d &vec) const
OdTrVisMiniVec2d operator~() const
OdTrVisMiniVec2d & set(const VecType &vec)
OdTrVisMiniVec2d & setDiv(const OdTrVisMiniVec2d &vec) const
static bool eqTol(float val, float eps=1.e-8f)
OdTrVisMiniVec2d mul(const OdTrVisMiniVec2d &vec) const
OdTrVisMiniVec2d operator-() const
OdTrVisMiniVec2d & set(DataType _x, DataType _y)
OdTrVisMiniVec2d & operator/=(DataType val)
friend OdTrVisMiniVec2d operator/(const OdTrVisMiniVec2d &vec, DataType val)
OdTrVisMiniVec2d & normalize(DataType eps=1.e-8f)
OdTrVisMiniVec3d & setMul(const OdTrVisMiniVec3d &vec) const
friend OdTrVisMiniVec3d operator*(const OdTrVisMiniVec3d &vec, DataType val)
OdTrVisMiniVec3d mul(const OdTrVisMiniVec3d &vec) const
bool operator!=(const OdTrVisMiniVec3d &vec) const
OdTrVisMiniVec3d(const BaseVec &xy, DataType _z)
OdTrVisMiniVec3d & operator/=(DataType val)
OdTrVisMiniVec3d & operator+=(const OdTrVisMiniVec3d &vec)
friend OdTrVisMiniVec3d operator/(const OdTrVisMiniVec3d &vec, DataType val)
OdTrVisMiniVec3d(const VecType &vec)
OdTrVisMiniVec3d & reflect(const OdTrVisMiniVec3d &n)
OdTrVisMiniVec3d & refract(const OdTrVisMiniVec3d &n, DataType eta, DataType eps=1.e-8f)
DataType operator[](int nAxis) const
bool isNull(DataType eps=1.e-8f) const
bool operator==(const OdTrVisMiniVec3d &vec) const
OdTrVisMiniVec3d & set(const BaseVec &xy, DataType _z)
OdTrVisMiniVec3d & set(const VecType &vec)
OdTrVisMiniVec2d< DataType > BaseVec
OdTrVisMiniVec3d & operator-=(const OdTrVisMiniVec3d &vec)
OdTrVisMiniVec3d & setNull()
OdTrVisMiniVec3d operator-() const
OdTrVisMiniVec3d(DataType _x, DataType _y, DataType _z)
OdTrVisMiniVec3d & setDiv(const OdTrVisMiniVec3d &vec) const
OdTrVisMiniVec3d & operator*=(DataType val)
OdTrVisMiniVec3d & normalize(DataType eps=1.e-8f)
OdTrVisMiniVec3d & set(DataType _x, DataType _y, DataType _z)
OdTrVisMiniVec3d operator~() const
OdTrVisMiniVec3d div(const OdTrVisMiniVec3d &vec) const
OdTrVisMiniVec3d operator+(const OdTrVisMiniVec3d &vec) const
OdTrVisMiniVec3d & negate()
OdTrVisMiniVec3d operator^(const OdTrVisMiniVec3d &vec) const