intersectsRay_Triangle
Definition
-- @/lua/common/mathlib.lua:1498
-- returns hit distance, barycentric x, y
function intersectsRay_Triangle(rpos, rdir, a, b, c)
local ca, bc = c - a, b - c
local norm = ca:cross(bc)
local rposc = rpos - c
local pOnTri = rposc:dot(norm) / rdir:dot(norm)
if pOnTri <= 0 then
local pacnorm = (rposc - rdir * pOnTri):cross(norm)
local bx, by = bc:dot(pacnorm), ca:dot(pacnorm)
if min(bx, by) >= 0 then
local normSq = norm:squaredLength() + 1e-30
if bx + by <= normSq then
return -pOnTri, bx / normSq, by / normSq
end
end
end
return math.huge, -1, -1
end
Callers
@/lua/ge/extensions/editor/aiViz.lua
local p4 = mapNodes[otherNid].pos + perpendicularDir * mapNodes[otherNid].radius + vec3(0, 0, 0.5)
local hitDist1 = intersectsRay_Triangle(camPos, rayDir, p1, p2, p3)
local hitDist2 = intersectsRay_Triangle(camPos, rayDir, p1, p3, p4)
local hitDist1 = intersectsRay_Triangle(camPos, rayDir, p1, p2, p3)
local hitDist2 = intersectsRay_Triangle(camPos, rayDir, p1, p3, p4)
local hitDist = math.min(hitDist1, hitDist2)
@/lua/ge/extensions/editor/slotTrafficEditor.lua
local p4 = mapNodes[otherNid].pos + perpendicularDir * mapNodes[otherNid].radius + vec3(0, 0, 0.5)
local hitDist1 = intersectsRay_Triangle(camPos, rayDir, p1, p2, p3)
local hitDist2 = intersectsRay_Triangle(camPos, rayDir, p1, p3, p4)
local hitDist1 = intersectsRay_Triangle(camPos, rayDir, p1, p2, p3)
local hitDist2 = intersectsRay_Triangle(camPos, rayDir, p1, p3, p4)
local hitDist = math.min(hitDist1, hitDist2)
@/lua/ge/extensions/editor/audioRibbonEditor.lua
tmpPos:set(node.x, node.y, maxRayDist)
local hitDist1 = intersectsRay_Triangle(tmpPos, globalDown, c0, c2, c0Next)
local hitDist2 = intersectsRay_Triangle(tmpPos, globalDown, c2, c2Next, c0Next)
local hitDist1 = intersectsRay_Triangle(tmpPos, globalDown, c0, c2, c0Next)
local hitDist2 = intersectsRay_Triangle(tmpPos, globalDown, c2, c2Next, c0Next)
local riverHeight = nil
@/lua/ge/extensions/gameplay/sites/zone.lua
for _, vertices in ipairs(fenceVertices) do
local hitDist1 = intersectsRay_Triangle(rayPos, rayDir, vertices.a, vertices.b, vertices.c)
local hitDist2 = intersectsRay_Triangle(rayPos, rayDir, vertices.c, vertices.d, vertices.a)
local hitDist1 = intersectsRay_Triangle(rayPos, rayDir, vertices.a, vertices.b, vertices.c)
local hitDist2 = intersectsRay_Triangle(rayPos, rayDir, vertices.c, vertices.d, vertices.a)
local dist = math.min(hitDist1, hitDist2)
@/lua/ge/extensions/editor/gen/world.lua
-- lo('?? for_k:'..k..'/'..#f.top.af)
d = intersectsRay_Triangle(ray.pos, ray.dir,
desctop.av[desctop.af[k].v+1], desctop.av[desctop.af[k+1].v+1], desctop.av[desctop.af[k+2].v+1])
-- local phit = U.ray2plane(ray,p,vec3(0,0,1))
d = intersectsRay_Triangle(ray.pos, ray.dir,
base2world(desc, {i,j}),
end
d = intersectsRay_Triangle(ray.pos, ray.dir,
base2world(desc, {i,j+1}),
@/lua/ge/extensions/editor/gen/mesh.lua
for i = 1,#m.faces,3 do
local d, bx, by = intersectsRay_Triangle(
ray.pos, ray.dir,
-- for i = 1,#m.faces,6 do
-- local d, bx, by = intersectsRay_Triangle(
-- core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
-- core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
local d, bx, by = intersectsRay_Triangle(
pfr, pto - pfr,
for i = 1,#m.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
local f = mto.faces[i]
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for i = 1,#m.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
local f = mto.ref[i]
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for i = 1,#m.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for _,t in pairs(mto.ref) do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for i = 1,#mto.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for i = 1,#m.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),
for i = 1,#mto.faces,6 do
local d, bx, by = intersectsRay_Triangle(
core_camera.getPosition(), rayCast.pos - core_camera.getPosition(),