From 291bd26fd8920831181e8207e1fcdf544cd6cd6f Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Mon, 11 Feb 2019 12:52:45 -0500 Subject: Reorganize, use readline --- src/vec3.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/vec3.h (limited to 'src/vec3.h') diff --git a/src/vec3.h b/src/vec3.h new file mode 100644 index 0000000..df68104 --- /dev/null +++ b/src/vec3.h @@ -0,0 +1,36 @@ +#ifndef VEC3_H +#define VEC3_H +#include + +typedef float scalar; + +class vec3 { + public: + scalar v[3]; + public: + vec3(); + vec3(scalar x); + vec3(scalar x, scalar y, scalar z); + scalar &operator[](int index); + scalar operator[](int index) const; + vec3 operator*(scalar scale) const; + vec3 operator/(scalar scale) const; + vec3 operator+(const vec3 &other) const; + vec3 operator-(const vec3 &other) const; + vec3 operator-() const; + const vec3 &operator*=(scalar scale); + const vec3 &operator/=(scalar scale); + const vec3 &operator+=(const vec3 &other); + const vec3 &operator-=(const vec3 &other); + scalar magnitude() const; + scalar magnitudeSquared() const; + vec3 normalize() const; + scalar dot(const vec3 &other) const; + vec3 cross(const vec3 &other) const; +}; +vec3 operator*(scalar scale, const vec3 &v); + +std::ostream &operator<<(std::ostream &output, const vec3 &v); +std::istream &operator>>(std::istream &input, vec3 &v); + +#endif -- cgit v1.1