2. 三角関数を使用した相対座標の求め方

 

視界内の相対座標を求める際に、予め4方向全ての相対座標をリスト等に入れておいて使用することも出来ますが、ここでは三角関数のsinとcosを用いて使用時点で計算して求めます。

 

コンピュータの座標で三角関数を使用するに当たり、ひとつ注意があります。

数学の座標平面コンピュータの画面の座標ではY軸のプラスとマイナスの向きが逆になります。

そこで、Y座標を求めるのに使用するcos取得した結果にマイナスを掛けて使用します。

 

※追記

斜めの計算は必要なかったので、現在は上(0°)・右(90°)・下(180°)・左(270°)の4方向で計算しています。

↓以下はあまり考えずに取り合えず作ってみた時のやり方の説明です。

 

 

 

まずcos(マイナスを掛けるので正確には"-cos")とsinの角度毎の値を確認します。この表の値は自分の位置から見ている方向を表すベクトルになります。

※使用する際は-cosとsinの値ROUND関数で四捨五入します。

 

・45°毎の-cosとsinの一覧表

※便宜上、この表は「CS表」と略します。

※上表の-cosとsinの値はROUND関数に影響が出ない範囲で丸めています。

 →例えば、実際の-cos 45°の値は-0.70710678…となります。

※表外の丸数字は、自分の周囲の相対座標取得時に使用します。

 

イメージとしては、Y軸が逆向きの座標平面の真ん中に立って、その角度をROUND(-cos)とROUND(sin)が示す距離分見ている感じになります。

 

 

2-(1) 上向きの相対座標の求め方

 

2-(1)-1 自分の位置(0,0)周囲の相対座標の求め方

 

上向き(角度0°)時の視界-90°~90°の範囲になり、CS表の「⑦⑧①②③」の値が対象となります。

座標平面で表すと下図の範囲になります。

 

視界のイメージ図(上向きの場合)


視界内の相対座標表(上向きの場合)

 

y=ROUND(-cos)x=ROUND(sin)とした場合、この座標平面を視界のイメージ図赤枠の範囲に見立てると相対座標表(上向きの場合)CS表の値が一致します。

この赤枠内の値を利用して上向きの視界内の全てのマスの座標を求めることで、向き変更時にもCS表の角度の範囲を変更するだけ変更した向き全てのマスの座標が求まります

 

 

2-(1)-2 正面の相対座標(近0、中0、遠0)の求め方

 

近0の座標は①と一致するので①の座標(-1,0)となります。

中0遠0の座標は、それぞれ近0の2倍、3倍の距離になるので①×2(=(-2,0))、①×3(=(-3,0))で求まります。

 

 

2-(1)-3 正面以外の相対座標の求め方

 

正面以外の座標は、自分の位置(0,0)から右1マス分のベクトルを求めて中0遠0から横向きの距離を計算することで求まります。

(0,1)-(0,0)→(0,1)となります。

↓↓↓

各相対座標は以下の通り

中右1:(-2,0)+(0,1)→(-2,1)

中右2:(-2,0)+(0,1)×2→(-2,2)

中左1:(-2,0)-(0,1)→(-2,-1)

中左2:(-2,0)-(0,1)×2→(-2,-2)

遠右1:(-3,0)+(0,1)→(-3,1)

遠右2:(-3,0)+(0,1)×2→(-3,2)

遠左1:(-3,0)-(0,1)→(-3,-1)

遠左2:(-3,0)-(0,1)×2→(-3,-2)

 

 

2-(2) 上向き以外の相対座標の求め方

 

右向きの相対座標

 

右向き(角度90°)時の視界0°~180°の範囲になり、CS表の「①②③④⑤」の値が対象となります。

 

視界のイメージ図(右向きの場合)

 

視界内の相対座標表(向きの場合)

 

CS表

CS表の①~⑤相対座標表一致

 

・正面の座標

上向きの計算と同様それぞれのマスの座標を求めます

 

近0が③の座標(0,1)なので、中0遠0の座標は③×2(=(0,2))、③×3(=(0,3))となります。

 

・正面以外の座標

自分の位置から右1マス分=(1,0)なので、各相対座標は以下の通り

中右1:(0,2)+(1,0)→(1,2)

中右2:(0,2)+(1,0)×2→(2,2)

中左1:(0,2)-(1,0)→(-1,2)

中左2:(0,2)-(1,0)×2→(-2,2)

遠右1:(0,3)+(1,0)→(1,3)

遠右2:(0,3)+(1,0)×2→(2,3)

遠左1:(0,3)-(1,0)→(-1,3)

遠左2:(0,3)-(1,0)×2→(-2,3)

となります。

 

下向き左向き同様の計算手順なので省略します。

 

「向き」と「視界」は以上です。(3)に続きます。