#include #include "triangle.h" double intersect_triangle_ray(Ray & ray, vector3d& a, vector3d& b, vector3d& c, double & aa, double & bb) { vector3d A = a-c; vector3d B = b-c; vector3d a_x_b = A.cross(B); vector3d c_o = c - ray.o; vector3d c_o_x_d = c_o.cross(ray.d); double den = a_x_b * ray.d; double t = a_x_b * c_o / den; aa = c_o_x_d * B / den; bb = -(c_o_x_d * A) / den; if(aa<0 || bb<0 || aa+bb>1) return -1.0; // if(t < 0.0) return -1.0; return t; }