intersectsRay_Cylinder
Definition
-- @/lua/common/mathlib.lua:1465
function intersectsRay_Cylinder(rpos, rdir, cposa, cposb, cR)
local rca = cposa - rpos
local cpnorm = cposb - cposa; cpnorm:normalize()
local cp = rca:projectToOriginPlane(cpnorm)
local rdp = rdir:projectToOriginPlane(cpnorm)
local invrdplen = 1 / (rdp:length() + 1e-30)
rdp:setScaled(invrdplen)
local minhit, maxhit = intersectsRay_Sphere(newLuaVec3xyz(0, 0, 0), rdp, cp, cR)
minhit, maxhit = minhit * invrdplen, maxhit * invrdplen
local plhita, plhitb = intersectsRay_Plane(rpos, rdir, cposa, cpnorm), intersectsRay_Plane(rpos, rdir, cposb, cpnorm)
minhit, maxhit = max(minhit, min(plhita, plhitb)), min(maxhit, max(plhita, plhitb))
return (minhit <= maxhit and minhit or math.huge), maxhit
end
Callers