nuclear@27: #include "ray.h" nuclear@27: #include "vector.h" nuclear@27: nuclear@27: scalar_t Ray::env_ior = 1.0; nuclear@27: nuclear@27: Ray::Ray() nuclear@27: { nuclear@27: ior = env_ior; nuclear@27: energy = 1.0; nuclear@27: time = 0; nuclear@27: iter = 0; nuclear@27: } nuclear@27: nuclear@27: Ray::Ray(const Vector3 &origin, const Vector3 &dir) nuclear@27: { nuclear@27: this->origin = origin; nuclear@27: this->dir = dir; nuclear@27: ior = env_ior; nuclear@27: energy = 1.0; nuclear@27: time = 0; nuclear@27: iter = 0; nuclear@27: } nuclear@27: nuclear@27: void Ray::transform(const Matrix4x4 &xform) nuclear@27: { nuclear@27: Matrix4x4 upper = xform; nuclear@27: upper[0][3] = upper[1][3] = upper[2][3] = upper[3][0] = upper[3][1] = upper[3][2] = 0.0; nuclear@27: upper[3][3] = 1.0; nuclear@27: nuclear@27: dir.transform(upper); nuclear@27: origin.transform(xform); nuclear@27: } nuclear@27: nuclear@27: Ray Ray::transformed(const Matrix4x4 &xform) const nuclear@27: { nuclear@27: Ray foo = *this; nuclear@27: foo.transform(xform); nuclear@27: return foo; nuclear@27: }