------------------------------------------
-- math.atan2 標準ライブラリ(数学関数) atan2_sample.lua
------------------------------------------
function main()
C_Black = color( 0, 0, 0) -- 黒
C_White = color(255, 255, 255) -- 白
C_Blue = color( 0, 0, 255) -- 青
C_Red = color(255, 0, 0) -- 赤
-- 機種の画面サイズ
screenW, screenH = canvas.getviewSize()
-- メイン画面サイズを変更
canvas.setMainBmp(500,300)
canvas.drawCls(C_White)
canvas.drawText("math.atan2 サンプル", 10, 4, 24, C_Black)
-- グラフ描画
for y = 0, 300, 50 do
canvas.drawLine( 100, y, 400, y, C_Blue) -- 横軸
end
for x = 100, 400, 50 do
canvas.drawLine( x, 0, x, 300, C_Blue) -- 縦軸
end
canvas.drawLine( 250,0, 250, 300, C_Red) -- 縦軸メイン
canvas.drawLine( 100, 150, 400, 150, C_Red) -- 横軸メイン
canvas.drawRect( 453, 268, 495, 288, color(255,0,0))
canvas.drawText("END", 455, 270, 20, color(0,0,0))
-- 矢印ファイル
canvas.workCls()
canvas.loadBmp(system.getAppPath() .."/" .. "pointer.bmp", 50, 50, 100, 100)
canvas.putrotg( 250, 150, 0, 50, 50, 100, 100)
canvas.putflush()
x, y = 0
while not ( x >= 450 and y >= 270) do --終了位置は甘い判定
x, y, mode = touch(0)
if x >= 100 and x <= 400 then -- グラフ内
canvas.putText("X:" .. x, 0, 80, 20, C_Black, C_White)
canvas.drawText("Y:" .. y, 0, 120, 20, C_Black, C_White)
if mode == 0 or mode == 2 then -- 0:タッチ中 2:スライド中
rad = math.atan2( x - 250, ( y - 150) * -1)
canvas.putText( "RAD:", 0, 160, 20, C_Black ,C_White)
canvas.drawText( math.floor(rad*1000)/1000 .. " ", 0, 180, 20, C_Black, C_White)
canvas.putrotg( 250,150, math.deg(rad), 50, 50, 100, 100)
canvas.putflush()
elseif mode == 1 or mode == 3 or mode == 4 then -- 1:ノータッチ 3:CANCEL 4:範囲外
-- 何も処理はしていないが残しておく
end
end
end
end
main()