aboutsummaryrefslogtreecommitdiff
path: root/vec3.h
diff options
context:
space:
mode:
Diffstat (limited to 'vec3.h')
-rw-r--r--vec3.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/vec3.h b/vec3.h
new file mode 100644
index 0000000..1f01098
--- /dev/null
+++ b/vec3.h
@@ -0,0 +1,27 @@
+#include <iostream>
+class vec3 {
+ public:
+ double v[3];
+ public:
+ vec3();
+ vec3(double x);
+ vec3(double x, double y, double z);
+ double &operator[](int index);
+ double operator[](int index) const;
+ vec3 operator*(double scale) const;
+ vec3 operator/(double scale) const;
+ vec3 operator+(const vec3 &other) const;
+ vec3 operator-(const vec3 &other) const;
+ vec3 operator-() const;
+ const vec3 &operator*=(double scale);
+ const vec3 &operator/=(double scale);
+ const vec3 &operator+=(const vec3 &other);
+ const vec3 &operator-=(const vec3 &other);
+ double magnitude() const;
+ double magnitudeSquared() const;
+ vec3 normalize() const;
+ double dot(const vec3 &other) const;
+ vec3 cross(const vec3 &other) const;
+};
+
+std::ostream &operator<<(std::ostream &output, const vec3 &v);