Show approximation of contact zone
This commit is contained in:
parent
a3ac8074ae
commit
d2ec1b39df
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user