123 Vector3() : x(0.0f), y(0.0f), z(0.0f) {}
125 Vector3(T x, T y, T z) : x(x), y(y), z(z) {}
129 void Set(T x, T y, T z) {
136 float s = 1.0f / std::sqrt(x * x + y * y + z * z);
149 return Vector3(y * v.z - z * v.y,
154 T Dot(
const Vector3& v)
const {
155 return x * v.x + y * v.y + z * v.z;
159 return Vector3(x + v.x, y + v.y, z + v.z);
162 void operator+=(
const Vector3& v) {
168 void operator-=(
const Vector3& v) {
174 void operator/=(T s) {
181 return Vector3(x - v.x, y - v.y, z - v.z);
189 return Vector3(x * s, y * s, z * s);
193 return Vector3(x / s, y / s, z / s);
196 bool operator==(
const Vector3& v)
const {
197 return x == v.x && y == v.y && z == v.z;
201 return Vector3(x * (1 - t) + v.x * t,
202 y * (1 - t) + v.y * t,
203 z * (1 - t) + v.z * t);
207 return Vector3(a.x * (1 - t) + b.x * t,
208 a.y * (1 - t) + b.y * t,
209 a.z * (1 - t) + b.z * t);
213 return sqrtf(powf(a.x - b.x, 2) + powf(a.y - b.y, 2) + powf(a.z - b.z, 2));
216 const T* Pointer()
const {
220 template <
typename P>
238 Vector4(T x, T y, T z, T w) : x(x), y(y), z(z), w(w) {}
244 void Set(T x, T y, T z, T w) {
252 T Dot(
const Vector4& v)
const {
253 return x * v.x + y * v.y + z * v.z + w * v.w;
257 return Vector4(-x, -y, -z, -w);
261 return Vector4(x * (1 - t) + v.x * t,
262 y * (1 - t) + v.y * t,
263 z * (1 - t) + v.z * t,
264 w * (1 - t) + v.w * t);
268 return Vector4(a.x * (1 - t) + b.x * t,
269 a.y * (1 - t) + b.y * t,
270 a.z * (1 - t) + b.z * t,
271 a.w * (1 - t) + b.w * t);
275 return sqrtf(powf(a.x - b.x, 2) + powf(a.y - b.y, 2) + powf(a.z - b.z, 2) + powf(a.w - b.w, 2));
279 return Vector4(x + v.x, y + v.y, z + v.z, w + v.w);
283 return Vector4(x * s, y * s, z * s, w * s);
286 const T* Pointer()
const {