6 float Vector3::nan
= NAN
;
10 elem
[0] = elem
[1] = elem
[2] = 0.0F
;
13 Vector3::Vector3(float a
, float b
, float c
)
20 Vector3::Vector3(const Vector3
&to_copy
)
22 elem
[0] = to_copy
.elem
[0];
23 elem
[1] = to_copy
.elem
[1];
24 elem
[2] = to_copy
.elem
[2];
27 Vector3
& Vector3::operator= (const Vector3
&to_copy
)
29 if( this != &to_copy
) {
30 elem
[0] = to_copy
.elem
[0];
31 elem
[1] = to_copy
.elem
[1];
32 elem
[2] = to_copy
.elem
[2];
37 float Vector3::operator[](int i
) const
44 void Vector3::set(float a
, float b
, float c
)
51 Vector3
Vector3::cross(const Vector3
&vec
) const
55 out
.elem
[0] = elem
[1] * vec
.elem
[2] - elem
[2] * vec
.elem
[1];
56 out
.elem
[1] = elem
[2] * vec
.elem
[0] - elem
[0] * vec
.elem
[2];
57 out
.elem
[2] = elem
[0] * vec
.elem
[1] - elem
[1] * vec
.elem
[0];
62 float Vector3::dot(const Vector3
&vec
) const
64 return elem
[0] * vec
.elem
[0] +
65 elem
[1] * vec
.elem
[1] +
66 elem
[2] * vec
.elem
[2];
69 float Vector3::magsq() const
71 return powf(elem
[0], 2) +
76 float Vector3::mag() const
78 return sqrtf(magsq());
81 Vector3
Vector3::add(const Vector3
&vec
) const
85 out
.elem
[0] = elem
[0] + vec
.elem
[0];
86 out
.elem
[1] = elem
[1] + vec
.elem
[1];
87 out
.elem
[2] = elem
[2] + vec
.elem
[2];
92 Vector3
Vector3::sub(const Vector3
&vec
) const
96 out
.elem
[0] = elem
[0] - vec
.elem
[0];
97 out
.elem
[1] = elem
[1] - vec
.elem
[1];
98 out
.elem
[2] = elem
[2] - vec
.elem
[2];
103 Vector3
Vector3::mul(float scalar
) const
107 out
.elem
[0] = elem
[0] * scalar
;
108 out
.elem
[1] = elem
[1] * scalar
;
109 out
.elem
[2] = elem
[2] * scalar
;
114 Vector3
Vector3::mul(const Vector3
& v
) const
118 out
.elem
[0] = elem
[0] * v
[0];
119 out
.elem
[1] = elem
[1] * v
[1];
120 out
.elem
[2] = elem
[2] * v
[2];
125 Vector3
Vector3::unit() const
131 out
.elem
[0] = elem
[0] / denom
;
132 out
.elem
[1] = elem
[1] / denom
;
133 out
.elem
[2] = elem
[2] / denom
;