| // |
| // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Vector: |
| // Vector class for linear math. |
| // |
| |
| #ifndef UTIL_VECTOR_H |
| #define UTIL_VECTOR_H |
| |
| #include <ostream> |
| |
| struct Vector2 |
| { |
| Vector2(); |
| Vector2(float x, float y); |
| |
| bool operator==(const Vector2 &vec) const; |
| bool operator!=(const Vector2 &vec) const; |
| |
| static float length(const Vector2 &vec); |
| static float lengthSquared(const Vector2 &vec); |
| |
| static Vector2 normalize(const Vector2 &vec); |
| |
| float *data() { return &x; } |
| const float *data() const { return &x; } |
| |
| float x, y; |
| }; |
| |
| std::ostream &operator<<(std::ostream &stream, const Vector2 &vec); |
| |
| struct Vector3 |
| { |
| Vector3(); |
| Vector3(float x, float y, float z); |
| |
| static float length(const Vector3 &vec); |
| static float lengthSquared(const Vector3 &vec); |
| |
| static Vector3 normalize(const Vector3 &vec); |
| |
| static float dot(const Vector3 &a, const Vector3 &b); |
| static Vector3 cross(const Vector3 &a, const Vector3 &b); |
| |
| float *data() { return &x; } |
| const float *data() const { return &x; } |
| |
| float x, y, z; |
| }; |
| |
| Vector3 operator*(const Vector3 &a, const Vector3 &b); |
| Vector3 operator*(const Vector3 &a, const float &b); |
| Vector3 operator/(const Vector3 &a, const Vector3 &b); |
| Vector3 operator/(const Vector3 &a, const float &b); |
| Vector3 operator+(const Vector3 &a, const Vector3 &b); |
| Vector3 operator-(const Vector3 &a, const Vector3 &b); |
| |
| struct Vector4 |
| { |
| Vector4(); |
| Vector4(float x, float y, float z, float w); |
| |
| static float length(const Vector4 &vec); |
| static float lengthSquared(const Vector4 &vec); |
| |
| static Vector4 normalize(const Vector4 &vec); |
| |
| static float dot(const Vector4 &a, const Vector4 &b); |
| |
| float *data() { return &x; } |
| const float *data() const { return &x; } |
| |
| float x, y, z, w; |
| }; |
| |
| #endif // UTIL_VECTOR_H |