0
0

More than 1 year has passed since last update.

ストワで始めるLua 第八回 パッシブソナーのコード

Posted at

動画はこちら

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0