aboutsummaryrefslogtreecommitdiff
path: root/vec3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vec3.cpp')
-rw-r--r--vec3.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/vec3.cpp b/vec3.cpp
index 8513916..51d4870 100644
--- a/vec3.cpp
+++ b/vec3.cpp
@@ -11,26 +11,26 @@ vec3::vec3() {
v[1] = 0;
v[2] = 0;
}
-vec3::vec3(double x) {
+vec3::vec3(scalar x) {
v[0] = x;
v[1] = 0;
v[2] = 0;
}
-vec3::vec3(double x, double y, double z) {
+vec3::vec3(scalar x, scalar y, scalar z) {
v[0] = x;
v[1] = y;
v[2] = z;
}
-double &vec3::operator[](int index) {
+scalar &vec3::operator[](int index) {
return v[index];
}
-double vec3::operator[](int index) const {
+scalar vec3::operator[](int index) const {
return v[index];
}
-vec3 vec3::operator*(double scale) const {
+vec3 vec3::operator*(scalar scale) const {
return vec3(v[0] * scale, v[1] * scale, v[2] * scale);
}
-vec3 vec3::operator/(double scale) const {
+vec3 vec3::operator/(scalar scale) const {
return vec3(v[0] / scale, v[1] / scale, v[2] / scale);
}
vec3 vec3::operator+(const vec3 &other) const{
@@ -42,13 +42,13 @@ vec3 vec3::operator-(const vec3 &other) const {
vec3 vec3::operator-() const {
return vec3(-v[0], -v[1], -v[2]);
}
-const vec3 &vec3::operator*=(double scale) {
+const vec3 &vec3::operator*=(scalar scale) {
v[0] *= scale;
v[1] *= scale;
v[2] *= scale;
return *this;
}
-const vec3 &vec3::operator/=(double scale) {
+const vec3 &vec3::operator/=(scalar scale) {
v[0] /= scale;
v[1] /= scale;
v[2] /= scale;
@@ -66,17 +66,17 @@ const vec3 &vec3::operator-=(const vec3 &other) {
v[2] -= other.v[2];
return *this;
}
-double vec3::magnitude() const {
+scalar vec3::magnitude() const {
return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
}
-double vec3::magnitudeSquared() const {
+scalar vec3::magnitudeSquared() const {
return v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
}
vec3 vec3::normalize() const {
- double m = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
+ scalar m = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
return vec3(v[0] / m, v[1] / m, v[2] / m);
}
-double vec3::dot(const vec3 &other) const {
+scalar vec3::dot(const vec3 &other) const {
return v[0] * other.v[0] + v[1] * other.v[1] + v[2] * other.v[2];
}
vec3 vec3::cross(const vec3 &other) const {
@@ -85,6 +85,10 @@ vec3 vec3::cross(const vec3 &other) const {
v[0] * other.v[1] - v[1] * other.v[0]);
}
std::ostream &operator<<(std::ostream &output, const vec3 &v) {
- output << '(' << v[0] << ", " << v[1] << ", " << v[2] << ')';
- return output;
+ return output << v[0] << " " << v[1] << " " << v[2];
+}
+
+vec3 operator*(scalar scale, const vec3 &v)
+{
+ return v * scale;
}