動画はこちら
passive
--init
pi=math.pi
pi2=pi*2
behindAngle=math.rad(3) --Backward angle not visible.
echoAngle=math.rad(3) --Viewing angle of the echo.
function onTick()
passiveData={} --Initialize
--Sonar data input
for i=0,15 do
if input.getBool(i+1) then
local x,y
x=input.getNumber(i*2+1)*pi2
y=input.getNumber(i*2+2)*pi2
table.insert(passiveData,{bearing=x,elevation=y})
end
end
end
function onDraw()
local w,h,cw,ch,radius
--resolution
w=screen.getWidth()
h=screen.getHeight()
--center
cw=w/2
ch=h/2
--display sonars circle radius
radius=h/2-3
--drawing echo
screen.setColor(0,255,0,128)
for i=1,#passiveData do
local bearing=passiveData[i].bearing
if pi-behindAngle >= bearing and -pi+behindAngle <= bearing then
local triAngleX1,triAngleY1,triAngleX2,triAngleY2
triAngleX1=cw+radius*math.sin(bearing-echoAngle)
triAngleY1=ch-radius*math.cos(bearing-echoAngle)
triAngleX2=cw+radius*math.sin(bearing+echoAngle)
triAngleY2=ch-radius*math.cos(bearing+echoAngle)
screen.drawTriangleF(cw, ch, triAngleX1, triAngleY1, triAngleX2, triAngleY2)
end
end
--drawing circle
screen.setColor(0,255,0)
screen.drawCircle(cw,ch,radius)
end