【中学校の数学をプログラミング】三平方の定理で距離を求めよう
本記事は2022年01月21日にLINE entry公式ブログにて掲載されたものを再掲載した記事です。
前回学んだ2乗の計算とルートの計算を使って、三平方の定理(ピタゴラスの定理とも言います)をプログラミングしてみましょう。中学校の数学の中でも難しい単元ですがプログラミングなら難しい計算はパソコンがやってくれるので安心してください。
前回の記事はこちら
【中学校の数学をプログラミング】 2乗とルートの計算
三平方の定理とは?
三平方の定理とは、直角三角形の2つの辺の長さがわかれば、もう1つの辺の長さを求めることができるというもので、「底辺の2乗 + 高さの2乗 = 斜辺の2乗」と表わされる公式です。斜辺(しゃへん)というのは文字通りななめの辺という意味です。平方と2乗は同じ意味で、3つの辺を2乗(つまり平方)したときの関係を表わしたものなので、「三平方」の定理と言います。
図で表わすと以下のようになります。
たとえば、底辺3cm、高さ4cmで、斜辺の長さがわからない直角三角形があったとします。底辺3の2乗は3 × 3 = 9で、高さ4の2乗は4 × 4 = 16ですね。それらを足すと、9 + 16 = 25となります。三平方の定理は、この25が斜辺の2乗に等しいことを表わしています。2乗したら25になる数値、つまりルート25はいくつでしょうか? かんたんですね。5 × 5 = 25なので、ルート25は5です。というわけで、この直角三角形の斜辺の長さは5cmということがわかりました。
何に使えるの?
直角三角形の1辺の長さがわかる公式と言われても何に使えばいいのかよくわからないですよね。たとえば、下の図のようにサリーとコニーが画面に表示されていたとき、三平方の定理を使うと、サリーとコニーの間の距離を計算することができるのです。距離がわかれば、近くにいたら「こんにちは」と言わせるなど、距離に応じた動きをさせられますよね。ものすごく近いときはぶつかったことにするなど、ゲームにも使えます。たとえばみんなの作品で公開されている「たからさがし」はブラウンとたから箱までの距離を使ったゲームになっています。
さて、LINE entryではサリーやコニーなどのキャラクターの位置は、座標を使って表わします。下の図では、サリーの座標は(0, 0)、コニーの座標は(200, 100)です。図のように直角三角形を書けば、斜辺がサリーとコニーの間の距離ということです。
では、底辺の長さはどうなるでしょうか? サリーのX座標とコニーのX座標の差を求めれば、底辺の長さを求めることができます。差を求めるには引き算を使いますよね。サリーのX座標が0で、コニーのX座標が200ですので、200 - 0は当然200です。高さはY座標の差を求めればよいので、100 - 0となり100だとわかります。あとは三平方の定理にあてはめて計算すれば距離がわかるはずです。
「底辺200の2乗 + 高さ100の2乗 = 斜辺の2乗」ですね。むむむ、ちょっと難しそうな計算です。そんなときこそプログラミングをしてパソコンに計算させてしまいましょう。 それでは計算のプログラムを作り、計算結果をブラウンに言ってもらいます。下のようにブロックを組み合わせてください。
底辺の2乗 + 高さの2乗で求められるのは斜辺の2乗の数値です。そしてその数値のルートを計算することで斜辺の長さを求めるプログラムです。
距離を求める問題にチャレンジ!
さきほど作ったプログラムの数値を変えて、下の画像のサリーとコニーの距離を求めてみてください。サリーの座標はすべて(0, 0)になっています。
すべての距離を求められましたか? サリーの座標が(0, 0)なので、コニーのX座標の数値を底辺、Y座標の値を高さとしてそのまま入力すればサリーとコニーの距離を求めることができます。マイナスの数値もそのまま入力しましょう。
答えは左から「109.659」、「109.659」です。計算が終わったあと、あることに気がつきましたか? 1つ目はマイナスの座標でも変わらず距離が求められること。2つ目は(100, 45)と (-100, -45)の距離がまったく同じということです。
1つ目については、2乗をするとマイナスの数値もプラスの数値になるという性質があるので、コニーの座標やサリーの座標がどんな数値でも距離がマイナスになることはありません。(くわしい理由や性質は中学校で習います)
2つ目については、座標を線で結んでできる直角三角形を考えてみてください。座標はプラスとマイナスで異なりますが底辺、高さ、斜辺すべてが同じ直角三角形になっていますね。だから距離も同じになるというわけです。
ちなみに底辺の値と高さの値を入れかえても斜辺の長さは変わりません。そのため下の図のコニーはすべてサリーから同じ距離の場所にいます。
今回はここまで。
三平方の定理を使って距離を求めるプログラムを作ることができました。ルートを求めると小数になってしまうことも多く、難しく感じた方もいるかもしれません。まずはお手本どおりにプログラムを作って、三平方の定理を使えば距離を求められることがわかればだいじょうぶです。次回は距離によって動作が変わるプログラムを作っていきます。お楽しみに!