diff --git a/src/basics/SConscript b/src/basics/SConscript index 0daa482..2014565 100644 --- a/src/basics/SConscript +++ b/src/basics/SConscript @@ -7,6 +7,7 @@ Import('env') files = [ 'matrix.cc', + 'ray.cc', 'vector.cc', ] diff --git a/src/basics/basics.hh b/src/basics/basics.hh index 8a556e8..fb956cd 100644 --- a/src/basics/basics.hh +++ b/src/basics/basics.hh @@ -10,6 +10,7 @@ #define __BASICS_BASICS_HH__ #include "basics/matrix.hh" +#include "basics/ray.hh" #include "basics/types.hh" #include "basics/vector.hh" diff --git a/src/basics/ray.cc b/src/basics/ray.cc new file mode 100644 index 0000000..197de91 --- /dev/null +++ b/src/basics/ray.cc @@ -0,0 +1,35 @@ +/* ray.cc + * vim: set tw=80: + * Eryn Wells + */ + +#include "basics/ray.hh" + + +namespace charles { +namespace basics { + +/* + * charles::basics::Ray::Ray -- + */ +Ray::Ray(Vector4 o, + Vector4 d) + : origin(o), + direction(d) +{ } + + +/* + * charles::basics::Ray::Parameterize -- + */ +Vector4 +Ray::Parameterize(const Double& t) + const +{ + return origin + direction * t; +} + + +} /* namespace basics */ +} /* namespace charles */ + diff --git a/src/basics/ray.hh b/src/basics/ray.hh new file mode 100644 index 0000000..26057a3 --- /dev/null +++ b/src/basics/ray.hh @@ -0,0 +1,25 @@ +/* ray.hh + * vim: set tw=80: + * Eryn Wells + */ + +#include "basics/types.hh" +#include "basics/vector.hh" + + +namespace charles { +namespace basics { + +struct Ray +{ + Ray(Vector4 o = Vector4(), Vector4 d = Vector4()); + + Vector4 Parameterize(const Double& t) const; + + Vector4 origin; + Vector4 direction; +}; + +} /* namespace basics */ +} /* namespace charles */ +