マウスで何かを動かしてその加速度を取得する


-- ここではマウスポインターの x 軸方向の加速度を取得してみる。
-- 確認しやすいよう、更新速度は遅めにする。
local step = 0.5
timer.start(step)
local pos2TickAgo = 0
local pos1TickAgo = 0
local posCurrent = 0
local speed1TickAgo = 0
local speedCurrent = 0
local accel = 0

function on.paint(gc)
   gc:drawString("pos2TickAgo: "..pos2TickAgo.." [pixel]",10,10)
   gc:drawString("pos1TickAgo: "..pos1TickAgo.." [pixel]",10,30)
   gc:drawString("posCurrent: "..posCurrent.." [pixel]",10,50)   
   gc:drawString("speed1TickAgo: "..speed1TickAgo.." [pixels/sec]",10,70)
   gc:drawString("speedCurrent: "..speedCurrent.." [pixels/sec]",10,90)
   gc:drawString("acceleration: " ..accel.." [pixels/sec"..string.uchar(0x00B2).."]",10,110)
   platform.window:invalidate()
end

function on.mouseMove(x, y)
   posCurrent = x
   platform.window:invalidate()
end
function on.timer()
   speed1TickAgo = (pos1TickAgo - pos2TickAgo)/step
   speedCurrent = (posCurrent - pos1TickAgo)/step
   accel = (speedCurrent - speed1TickAgo)/step
   pos2TickAgo = pos1TickAgo
   pos1TickAgo = posCurrent
   platform.window:invalidate()
end