nuclear@13: #ifndef VMATH_RAY_H_ nuclear@13: #define VMATH_RAY_H_ nuclear@13: nuclear@13: #include "vmath.h" nuclear@13: #include "vmathmat.h" nuclear@13: nuclear@13: class Ray { nuclear@13: public: nuclear@14: Vector3 origin, dir; nuclear@13: nuclear@13: Ray() {} nuclear@14: Ray(const Vector3 &p, const Vector3 &d) : origin(p), dir(d) {} nuclear@13: }; nuclear@13: nuclear@13: inline Ray transform(const Matrix4x4 &m, const Ray &r) nuclear@13: { nuclear@13: Matrix4x4 rmat = m; nuclear@13: rmat[0][3] = rmat[1][3] = rmat[2][3] = rmat[3][0] = rmat[3][1] = rmat[3][2] = 0.0; nuclear@13: rmat[3][3] = 1.0; nuclear@13: nuclear@14: return Ray(transform(m, r.origin), transform(rmat, r.dir)); nuclear@13: } nuclear@13: nuclear@13: #endif // VMATH_RAY_H_