VE Lua Documentation

Press F to search!

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