エクセル雑感
「ポケモンを確実に見つける方法」をExcelで数学してみた

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2016-11-04

「ポケモンを確実に見つける方法」をExcelで数学してみた

ポケモンGO関連の記事をみていたら、


【ポケモンGO】かくれているポケモンを確実に見つける方法、という記事を読んだ。

普通にそうだなという感想なのですが、

もっとまじめに数学したら、もっと良い方法があるのではないかと。

元記事はあちこちで見た気がするが、多分これでしょ
「【ポケモンGO】かくれているポケモンを確実に見つける方法」
で探せば、直ぐに見つかります。
そこでの方法としては
Excel ポケモンGO
近くにいるポケモンに表示された地点を①
そこから、どっちの方向でも良いので真っ直ぐに進みポケモンが消える地点を②
今度は真逆に歩いて、ポケモンが表示されて、そして消える地点を③
※②から③までの距離を歩数等で測っておく
②と③の中間点Aを、直角に左右のどちらかに進めばポケモンがいる。


確かに、この考え方なら小学生でもわかる理屈です。
しかし、最後が2択になってしまい、反対に歩き出してしまうとかなり距離をロスしますね。
原因は、一直線に歩くからなのですか、
ちゃんと数学すれば、もっと確実にポケモンにたどり着けるのではないかという事で考えてみました。


高校生くらいになれば、もっとちゃんと数学できるでしょ、ということで、
もっと高度に、最短距離でポケモンにたどり着く方法を数学してみました。

まずは、

歩き方
Excel ポケモンGO
近くにいるポケモンに表示された地点を
そこから、どっちの方向でも良いので真っ直ぐに進みポケモンが消える地点を
今度は真逆に歩いて、ポケモンが表示されてから、もう少し進んだ地点を
※ここが重要、①まで戻る必要はない、ポケモンが確実に表示された地点で良い。

※②から③までの距離を歩数等で測っておく
③の地点を、直角に左右のどちらか(上図では右)に進んで、ポケモンが消える地点を
※③から④までの距離を歩数等で測っておく
ここです、この時点(②と④の地点を特定した時点)で、ポケモンの場所は特定されています。


ポケモンの場所を特定できる理由

二点を通る円で半径R(200m)の円は2つだけ。
この場合は、①③を内に含まなければならないので円は一つだけ。
つまり、円が特定されるので、中心点も特定できるという事です。
念の為書いておくと、
②と④を中心に、半径R(200m)の円を書いた交点が、二点を通る円の中心になります。
小学校で、コンパス使って良くやったやつですね。


さて、ここからがちょっと難しくなります。
④の地点から、ポケモンの場所へ進むには、どうすれば良いか。
距離は半径R(200m)で間違いない。
後は、方角だけです。
④の地点から、②の地点を向いて、何度の角度で歩き出せば良いかを計算します。
つまり、②と④と円の中心(ポケモンの場所)の角度が分かれば良いのです。


数学の始まり
ここからが数学になります。
ここが重要です。
補助線を引いてみましょう。

Excel ポケモンGO

円の中心から②④へ補助線を引いて、②と④の間にも引いてみます。
これで二等辺三角形の出来上がりです。

三角形だけを見てみると、

Excel ポケモンGO

辺AB(b)の長さは、半径(200m)です。
辺BC(a)の長さは、半径(200m)です。

辺AC(b)の長さは、②④の距離になるので、

Excel ポケモンGO
超有名な定理、ピタゴラスの定理(三平方の定理)を使って、
②④二乗 = ②③二乗 + ③④二乗
これで求まります。

三角形の3辺の長さが求まれば、
余弦定理
これで計算できます。


すみません、
余弦定理の理屈までは、ちょっと説明できません。
私は現役退いて長いので、さすがに余弦定理までは・・・
多分、高1か高2くらいの数学だったはず。


Excelで計算してみた

Excel ポケモンGO

bの計算式は、
=SQRT(B4^2+B5^2)
(②③二乗 + ③④二乗)の平方根

角Aの計算式は、
=DEGREES(ACOS((B3^2+B4^2-B2^2)/(2*B3*B4)))

ACOS関数
アークコサイン
ACOS(数値)
そのコサインが数値であるような角度をラジアンで返します。
DEGREES関数
ディグリーズ
DEGREES(角度)
ラジアンを度に変換します。
余弦定理を使った数式については、
ググって、あちこち見て回った計算式を、Excelの関数で作成しました。
多分あっているとは思うのですが、胸を張って言える程の自身は無いです。

上記では、
②③を80m
③④を70m
としたときの結果です。

つまり、

④の地点から、②の地点を向いて、
74.6度の方向に200m行った地点にポケモンがいるという事になります。


以上が、ポケモンの場所を特定する最短の歩き方と、ポケモンの位置を特定する方法です。
では、
このExcelを持って、スマホとともにポケモン探しへGO!
なんてことをしちゃダメですよ、絶対にダメね。


私は、これを書いている時点では、ポケモンGOは、もうちょっとで20レベルといったところなので、
ポケモンGO自体は、そんなに詳しくありませんので、あくまで机上での計算という事です。
ポケモンGOのGPSって、そんなに精度は良くないですしね。

そもそも、
200mも直進出来る場所が、この狭い日本にどれだけあるのか・・・
という基本的な疑問が大いにあります。
といいますか、
大抵は建物等に邪魔されて、目的地に着いた頃にはポケモンはいずこ・・・
ということで、あくまで机上のお遊びです。

高校生諸君、「数学なんて将来何の役に立つんだ」と思う事もあるでしょう。
その答えは、
こういう時に役に立ったり、立たなかったり
とにかく一生懸命勉強しましょう。



同じテーマ「エクセル雑感」の記事

プログラミングとは
「ネ申Excel」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用
「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルで「もういくつ寝るとお正月」
エクセルで連立方程式を解く(MINVERSE,MMULT)
VBAが消えてしまった!マクロが壊れて動かない!
エクセル関連ツイート
エクセル関連ツイートNo2
エクセル関連ツイートNo3
エクセル関連ツイートNo4


新着記事NEW ・・・新着記事一覧を見る

import文(パッケージ・モジュールのインポート)|Python入門(9月24日)
例外処理(try文)とexception一覧|Python入門(9月23日)
リスト内包表記|Python入門(9月22日)
Pythonの引数は参照渡しだが・・・|Python入門(9月21日)
lambda(ラムダ式、無名関数)と三項演算子|Python入門(9月20日)
関数内関数(関数のネスト)とスコープ|Python入門(9月18日)
関数の定義(def文)と引数|Python入門(9月18日)
組み込み関数一覧|Python入門(9月17日)
辞書(dict型)|Python入門(9月16日)
入力規則への貼り付けを禁止する|VBA技術解説(9月16日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ