math.atan2

math.atan2 座標の逆正接を返す。

------------------------------------------
-- 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()
 

使用した矢印のビットマップです。

1.math.atan2のサンプルの実行結果です。碁盤の目になっているところをタッチしてみて下さい。
2.タッチした方向に矢印が向きます。終了はENDをクリックします。


コメント(最大10行)
名前:
コメント

すべてのコメントを見る

タグ:

+ タグ編集
  • タグ:
最終更新:2012年03月17日 20:07
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。