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