「ユニット間の角度を求める」の編集履歴(バックアップ)一覧に戻る

ユニット間の角度を求める - (2007/12/09 (日) 22:23:58) のソース

*ユニット間の角度を求めるサブルーチン

ある2つのユニット間の角度を求めます。

第一引数に指定されたユニットを原点とし、そのユニットの右側が0度、反時計回りに角度が増加していきます。

 # 書式:getDegree(UnitID, UnitID)
 # Args(1)を原点にArgs(2)に対する角度を求める。
 # 右を0°とし、反時計回りに増加する。(0~360)
 getDegree:
 Local wx1 wy1 wx2 wy2
 
 # 対象ユニットの座標をピクセルで取得
 wx1 = WX(Args(1))
 wy1 = WY(Args(1))
 # 相手ユニットの座標をピクセルで取得
 wx2 = WX(Args(2))
 wy2 = WY(Args(2))
 
 # タンジェントを求める
 Local tanj = (wx1 - wx2) / (wy2 - wy1)
 
 # ラジアンに直す
 Local deg = Atn(tanj)
 # 度に直す
 deg = 180 * deg / 3.141592
 deg = Int(deg)
 
 If wx1 = wx2 Then
   If wy1 > wy2 Then
     deg = 90
   Else
     deg = 270
   Endif
 Elseif wx1 > wx2 Then
   If wy1 = wy2 Then
     deg = 180
   Elseif wy1 > wy2 Then
     deg = Abs(deg) + 90
   Else
     deg = 270 - deg
   Endif
 Else
   If wy1 = wy2 Then
     deg = 0
   Elseif wy1 > wy2 Then
     deg = 90 - deg
   Else
     deg = Abs(deg) + 270
   Endif
 Endif
 
 Return deg
[[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]
目安箱バナー