エクセル雑感 | 「ポケモンを確実に見つける方法」をExcelで数学してみた | ExcelマクロVBAとエクセル関数についての私的雑感



最終更新日:2016-11-04

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

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

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

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

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


元記事はあちこちで見た気がするが、多分これでしょ
「【ポケモンGO】かくれているポケモンを確実に見つける方法」
で探せば、直ぐに見つかります。
そこでの方法としては

近くにいるポケモンに表示された地点を@
そこから、どっちの方向でも良いので真っ直ぐに進みポケモンが消える地点をA
今度は真逆に歩いて、ポケモンが表示されて、そして消える地点をB
※AからBまでの距離を歩数等で測っておく
AとBの中間点Aを、直角に左右のどちらかに進めばポケモンがいる。


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

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

まずは、

歩き方


近くにいるポケモンに表示された地点を@
そこから、どっちの方向でも良いので真っ直ぐに進みポケモンが消える地点をA
今度は真逆に歩いて、ポケモンが表示されてから、もう少し進んだ地点をB
※ここが重要、@まで戻る必要はない、ポケモンが確実に表示された地点で良い。
※AからBまでの距離を歩数等で測っておく
Bの地点を、直角に左右のどちらか(上図では右)に進んで、ポケモンが消える地点をC
※BからCまでの距離を歩数等で測っておく
ここです、この時点(AとCの地点を特定した時点)で、ポケモンの場所は特定されています。


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

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


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

数学の始まり

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



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

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



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

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


超有名な定理、ピタゴラスの定理(三平方の定理)を使って、
AC二乗 = AB二乗 + BC二乗
これで求まります。

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

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


Excelで計算してみた



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

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

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

上記では、
ABを80m
BCを70m
としたときの結果です。

つまり、

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


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

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

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

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




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

だまされるな!RangeとCellsの使い分け!
エクセル関連ツイートNo2
エクセル(関数・マクロ)上達のコツ
エクセルVBAあるある
Excelマクロを書くのに○○力は必用か?
offset 検索ワードで非常に多いので「offsetまとめ」
Excelのリンクの管理について
プログラミングとは
「ネ申Excel」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用

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

セルの操作|MOS VBAエキスパート対策(2月20日)
変数と定数|MOS VBAエキスパート対策(2月17日)
条件付き書式で変更された書式を取得する|VBAサンプル集(2月16日)
VBAの構文|MOS VBAエキスパート対策(2月15日)
増殖した条件付き書式を整理統合する|VBAサンプル集(2月12日)
マクロの記録|MOS VBAエキスパート対策(2月12日)
マクロとVBAの概念|MOS VBAエキスパート対策(2月10日)
MOS VBAエキスパート対策|MOS VBA対策(2月10日)
VBAの配列まとめ(静的配列、動的配列)|VBA技術解説(2月8日)
VBAにおけるピリオドとカンマとスペースの使い方|VBA技術解説(2月7日)

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

1.最終行の取得(End,Rows.Count)|VBA入門
2.変数とデータ型(Dim)|ExcelマクロVBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.マクロって何?VBAって何?|ExcelマクロVBA入門
7.定数と型宣言文字(Const)|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作



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

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


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




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

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

    本文下部へ

    ↑ PAGE TOP