Advertisement
Nieb_

ray_triangle

Apr 23rd, 2021
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.61 KB | None | 0 0
  1. FUNCTION ray_triangle(RayPos REF AS Vec3, RayDir REF AS Vec3, Tri_Vert REF AS Vec3[])
  2. e1 AS Vec3 : e1 = v3Sub(Tri_Vert[1], Tri_Vert[0])
  3. e2 AS Vec3 : e2 = v3Sub(Tri_Vert[2], Tri_Vert[0])
  4. pv AS Vec3 : pv = v3Crs(RayDir, e2)
  5. tv AS Vec3
  6.  
  7. d AS FLOAT : d = v3Dot(e1, pv)
  8.  
  9. IF d > 0.0
  10. tv = v3Sub(RayPos, Tri_Vert[0])
  11. ELSE
  12. tv = v3Sub(Tri_Vert[0], RayPos)
  13. d = -d
  14. ENDIF
  15.  
  16. u AS FLOAT : u = v3Dot(tv, pv)
  17.  
  18. IF u < 0 OR u > d THEN EXITFUNCTION 0
  19.  
  20. v AS FLOAT : v = v3Dot(RayDir, v3Crs(tv, e1))
  21.  
  22. IF v < 0 OR u + v > d THEN EXITFUNCTION 0
  23. ENDFUNCTION 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement