--- a/src/vector.h Fri Nov 30 00:44:51 2007 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * C++ RayTracer
- * file: vector.h
- *
- * Radek Brich, 2006
- */
-
-#ifndef VECTOR_H
-#define VECTOR_H
-
-#include <math.h>
-#include <iostream>
-
-using namespace std;
-
-class Vector3
-{
-public:
- // data
- union {
- struct {
- float x, y, z;
- };
- struct {
- float r, g, b;
- };
- float cell[3];
- };
-
- // constructors
- Vector3(): x(0.0f), y(0.0f), z(0.0f) {};
- Vector3(float ax, float ay, float az): x(ax), y(ay), z(az) {};
-
- // index operator
- float &operator[](int index) { return cell[index]; };
-
- bool operator==(Vector3 &v) { return x==v.x && y==v.y && z==v.z; };
-
- // normalize
- Vector3 normalize()
- {
- float f = 1.0f / mag();
- x *= f;
- y *= f;
- z *= f;
- return *this;
- }
-
- // get normalized copy
- Vector3 unit()
- {
- Vector3 u(*this);
- return u.normalize();;
- }
-
- // square magnitude, magnitude
- float mag2() { return x * x + y * y + z * z; }
- float mag() { return sqrtf(mag2()); }
-
- // negative
- Vector3 operator-() { return Vector3(-x, -y, -z); }
-
- // accumulate
- Vector3 operator+=(const Vector3 &v)
- {
- x += v.x;
- y += v.y;
- z += v.z;
- return *this;
- };
-
- // sum
- friend Vector3 operator+(const Vector3 &a, const Vector3 &b)
- {
- return Vector3(a.x + b.x, a.y + b.y, a.z + b.z);
- };
-
- // difference
- friend Vector3 operator-(const Vector3 &a, const Vector3 &b)
- {
- return Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
- };
-
- // dot product
- friend float dot(const Vector3 &a, const Vector3 &b)
- {
- return a.x * b.x + a.y * b.y + a.z * b.z;
- };
-
- // cross product
- friend Vector3 cross(const Vector3 &a, const Vector3 &b)
- {
- return Vector3(a.y * b.z - a.z * b.y,
- a.z * b.x - a.x * b.z,
- a.x * b.y - a.y * b.x);
- };
-
- // product of vector and scalar
- friend Vector3 operator*(const Vector3 &v, const float &f)
- {
- return Vector3(f * v.x, f * v.y, f * v.z);
- }
-
- friend Vector3 operator*(const float &f, const Vector3 &v)
- {
- return v * f;
- };
-
- // vector plus scalar
- friend Vector3 operator+(const Vector3 &v, const float &f)
- {
- return Vector3(v.x + f, v.y + f, v.z + f);
- }
-
- // vector minus scalar
- friend Vector3 operator-(const Vector3 &v, const float &f)
- {
- return Vector3(v.x - f, v.y - f, v.z - f);
- }
-
- // cell by cell product (only usable for colours)
- friend Vector3 operator*(const Vector3 &a, const Vector3 &b)
- {
- return Vector3(a.x * b.x, a.y * b.y, a.z * b.z);
- };
-
- // print
- friend ostream & operator<<(ostream &st, const Vector3 &v)
- {
- return st << "(" << v.x << ", " << v.y << ", " << v.z << ")";
- }
-};
-
-typedef Vector3 Colour;
-
-#endif