added Ray::randomRay() to generated a ray with origin at (0,0,0) and a random direction

git-svn-id: svn://anubis/fart/trunk@254 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop committed 2010-06-25 16:16:08 +00:00
1 parent 5eeee5fd90
commit bc27be0f85
3 files changed
+25 -3

No files matched your search

+16 -1
View File
@@ -1,6 +1,9 @@
#include <stdlib.h> /* rand() */
#include <iostream>
#include "Ray.h"
#include <iostream>
Ray::Ray()
{
@@ -13,6 +16,18 @@ Ray::Ray(const Vector & origin, const Vector & direction)
m_direction.normalize();
}
Ray Ray::randomRay()
{
double x, y, z;
do
{
x = 2.0 * rand() / RAND_MAX - 1.0;
y = 2.0 * rand() / RAND_MAX - 1.0;
z = 2.0 * rand() / RAND_MAX - 1.0;
} while (x*x + y*y + z*z <= 1.0);
return Ray(Vector(0, 0, 0), Vector(x, y, z));
}
/*
* return a vector for the point at distance dist
* from the ray's origin point, along its direction.
+1
View File
@@ -10,6 +10,7 @@ class Ray
public:
Ray();
Ray(const Vector & origin, const Vector & direction);
static Ray randomRay();
const Vector & getOrigin() const { return m_origin; }
const Vector & getDirection() const { return m_direction; }
Vector getPositionAt(double dist) const;