Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun float tritest_b( vec o, vec d, vec p0, vec p1, vec p2 ) {
- vec normal = ( vec edge0 = p1 - p0 ) x ( vec edge1 = p0 - p2 );
- float rcp = 1.0 / normal . d;
- float toverd = normal . ( vec edge2 = p0 - o ) * rcp;
- if ( toverd < epsilon )
- return nohit;
- float uoverd = ( vec interm = edge2 x d ) . edge1 * rcp;
- if ( uoverd < 0.0 )
- return nohit;
- float voverd = interm . edge0 * rcp;
- if ( uoverd + voverd > 1.0 || voverd < 0.0 )
- return nohit;
- return toverd;
- }
Add Comment
Please, Sign In to add comment