Show approximation of contact zone

This commit is contained in:
Kistaro Windrider 2025-06-01 20:38:56 -07:00
parent a3ac8074ae
commit d2ec1b39df
Signed by: kistaro
SSH Key Fingerprint: SHA256:TBE2ynfmJqsAf0CP6gsflA0q5X5wD5fVKWPsZ7eVUg8

View File

@ -23,7 +23,7 @@ function collides()
-- x
if ldx==0 then
local lx=lx0 -- which ==lx1
if (lx<bx0 or lx>=bx1) return false
if (lx<bx0 or lx>=bx1) return nil
else
local tx0=(bx0-lx0)/ldx
local tx1=(bx1-lx0)/ldx
@ -34,7 +34,7 @@ function collides()
if ldy==0 then
local ly=ly0 -- which ==ly1
if (ly<by0 or ly>=by1) return false
if (ly<by0 or ly>=by1) return nil
else
local ty0=(by0-ly0)/ldy
local ty1=(by1-ly0)/ldy
@ -43,7 +43,8 @@ function collides()
tmax=min(tmax,max(ty0,ty1))
end
return tmax>=tmin
if (tmax < tmin) return nil
return tmin,tmax
end
@ -73,7 +74,7 @@ function _to_halfopen(x0,x1)
end
function _update60()
local t=time()/4
local t=time()/16
local bx0_=_bounce_screen(t*1)
local by0_=_bounce_screen(t*2)
@ -117,11 +118,19 @@ end
function _draw()
cls(0)
rect(bx0,by0,bx1,by1,6)
local lc=2
if collides() then
lc=8
line(lx0,ly0,lx1,ly1,2)
local cmin, cmax = collides()
if cmin then
local dx,dy=lx1-lx0,ly1-ly0
line(lx0 + dx*cmin,
ly0 + dy*cmin,
lx0 + dx*cmax,
ly0 + dy*cmax,
8)
pset(lx0 + dx*cmin,
ly0 + dy*cmin,
10)
end
line(lx0,ly0,lx1,ly1,lc)
pset(last_mx,last_my,7)
end