95 return *
this *= 1 / s;
99 return Vector(v1[
X] + v2[
X], v1[
Y] + v2[
Y], v1[
Z] + v2[
Z]);
103 return Vector(v1[
X] - v2[
X], v1[
Y] - v2[
Y], v1[
Z] - v2[
Z]);
111 return Vector(v[
X] * s, v[
Y] * s, v[
Z] * s);
122 return v1[
X] * v2[
X] + v1[
Y] * v2[
Y] + v1[
Z] * v2[
Z];
135 int axis = (a[
X] = fabs(
comp[
X])) < (a[
Y] = fabs(
comp[
Y])) ?
Y :
X;
136 return a[axis] < fabs(
comp[
Z]) ?
Z : axis;
141 Scalar r = sqrt(1 - z * z);
143 return Vector(r * cos(t), r * sin(t), z);
157 return acos(
dot(v1, v2) / s);
162 v1[
Z] * v2[
X] - v1[
X] * v2[
Z],
163 v1[
X] * v2[
Y] - v1[
Y] * v2[
X]);
167 return v1[
X] * (v2[
Y] * v3[
Z] - v2[
Z] * v3[
Y]) +
168 v1[
Y] * (v2[
Z] * v3[
X] - v2[
X] * v3[
Z]) +
169 v1[
Z] * (v2[
X] * v3[
Y] - v2[
Y] * v3[
X]);
Scalar length(const Vector &v)
Scalar dot(const Vector &v1, const Vector &v2)
Vector(const double v[3])
Scalar length2(const Vector &v)
Scalar triple(const Vector &v1, const Vector &v2, const Vector &v3)
Vector normalized() const
Vector & operator+=(const Vector &v)
Vector operator*(const Vector &v, Scalar s)
Scalar angle(const Vector &v1, const Vector &v2)
Vector cross(const Vector &v1, const Vector &v2)
Vector & operator/=(Scalar s)
Vector operator+(const Vector &v1, const Vector &v2)
Vector operator-(const Vector &v1, const Vector &v2)
Vector operator/(const Vector &v, Scalar s)
bool approxZero(const Vector &v)
Vector & operator*=(Scalar s)
bool approxEqual(const Vector &v1, const Vector &v2)
Vector(Scalar x, Scalar y, Scalar z)
Vector & operator-=(const Vector &v)