小学生にもわかる三角関数―三角関数を使ったプログラミング

数学とプログラミング

三角関数とプログラミングの世界

1. 三角関数ってなに?

三角関数(サイン、コサイン、タンジェント)は、三角形の角と辺の関係を数字で表す魔法のツールです。
プログラミングでは、特にゲームやアニメーション、ロボットの動き、グラフィックなどで使います。


2. サイン(sin)

  • サインは、角度を入力すると「高さ」を返してくれる関数です。
  • 直角三角形でいうと、「角度の向こう側の辺 ÷ 斜めの辺」がサインです。
import math

angle = 30  # 角度
radians = math.radians(angle)  # プログラムでは角度をラジアンに変換する
height = math.sin(radians)  # sinで高さを計算
print(height)  # 0.5

💡ポイント:

  • 「高さ」を計算するので、ゲームのジャンプや振り子の動きに使えるよ。

3. コサイン(cos)

  • コサインは、角度を入力すると「横の長さ」を返してくれる関数です。
  • 直角三角形でいうと、「角度の横の辺 ÷ 斜めの辺」がコサインです。
x_length = math.cos(radians)  # 横の長さ
print(x_length)  # 0.866...

💡ポイント:

  • 「横方向の動き」を計算できるので、キャラクターの動きや回転アニメに便利。

4. タンジェント(tan)

  • タンジェントは、角度の高さ ÷ 横の長さを計算します。
  • 直角三角形で「上にどれだけ行くか / 横にどれだけ行くか」を表す感じです。
slope = math.tan(radians)  # 傾き
print(slope)  # 0.577...

💡ポイント:

  • 角度に応じた坂の傾きや、向きを計算するときに便利。

5. プログラミングでの活用イメージ

  1. ゲームのジャンプy = math.sin(angle)
  2. キャラクターの回転x = math.cos(angle)y = math.sin(angle)
  3. 振り子や波の動きy = amplitude * math.sin(time)
  4. マウスの角度に合わせた向きtanで角度を計算

6. 覚え方のヒント

  • サイン → 上に行く
  • コサイン → 横に行く
  • タンジェント → 傾き(上/横)

7. pythonプルグラム

三角関数を使ってキャラクターが左右に動きながらジャンプするアニメみたいなPythonプログラムを作ってみましょう。

ここでは turtle というPythonの描画ライブラリを使います。ゲームエンジンほど複雑じゃなく、画面にキャラクターを動かして確認できます。


ファイル名:turtle_game.py

import turtle
import math

# 画面設定
screen = turtle.Screen()
screen.title("キーボードで操作するジャンプ")
screen.bgcolor("skyblue")
screen.setup(width=600, height=400)

# キャラクター設定
player = turtle.Turtle()
player.shape("turtle")
player.color("green")
player.penup()
player.goto(0, 0)

# 移動量とジャンプの設定
move_distance = 20
jump_height = 50
is_jumping = False

# 左右移動
def move_left():
    x = player.xcor() - move_distance
    player.setx(x)

def move_right():
    x = player.xcor() + move_distance
    player.setx(x)

# ジャンプ
def jump():
    global is_jumping
    if not is_jumping:
        is_jumping = True
        y_start = player.ycor()
        # 上にジャンプ
        for i in range(0, 91, 10):
            y = y_start + jump_height * math.sin(math.radians(i))
            player.sety(y)
        # 下に戻る
        for i in range(90, -1, -10):
            y = y_start + jump_height * math.sin(math.radians(i))
            player.sety(y)
        is_jumping = False

# キーの設定
screen.listen()
screen.onkey(move_left, "Left")    # 左矢印で左
screen.onkey(move_right, "Right")  # 右矢印で右
screen.onkey(jump, "space")        # スペースでジャンプ

screen.mainloop()

🔹 プログラムの説明

  1. math.sin() で高さを計算 → キャラクターがジャンプしているように動く
  2. x = step - 180 で左右に移動
  3. amplitude を変えるとジャンプの高さが変わる
  4. time.sleep(speed) でアニメーションの速度を調整

💡 遊び方ヒント

  • amplitude を大きくするとジャンプが高くなる
  • speed を小さくするとゆっくりジャンプする
  • player.shape("circle") に変えるとカメじゃなく丸でもOK

angle_radiansとは

angle_radians「ラジアン」という単位で表した角度 のことです。


🔹 角度とラジアンの違い

  • みんなが学校で習う角度は 度数法(°:ど)
    • 例:30°, 45°, 90° …
  • プログラミングや数学の多くの関数(特に math.sin, math.cos, math.tan)は
    ラジアン という単位を使います。

🔹 ラジアンってなに?

  • 1ラジアンは「円の半径と同じ長さの弧がつくる角度」
  • 覚えやすい対応表:
    • 180° = π ラジアン
    • 360° = 2π ラジアン
    • 90° = π/2 ラジアン

🔹 Pythonでの変換

プログラムで math.sin(30) としても、30°とは解釈されません。
Pythonは「30ラジアン」と考えてしまうので、全然違う答えになります。

そこで使うのが

angle_rad = math.radians(angle)

です。
これは「度(°)をラジアンに変換する関数」。


🔹 例

import math

angle = 30
angle_rad = math.radians(angle)

print("30度をラジアンに変換:", angle_rad)   # 0.523...
print("sin(30°):", math.sin(angle_rad))       # 0.5

✅ まとめ

  • angle → 学校で習う「度(°)」
  • angle_rad → コンピュータが使う「ラジアン」
  • math.radians(angle) で変換してから使うのが正しい

小学生向けにたとえると、
「角度(°)」は日本語での表現、
「ラジアン」は英語みたいな表現。
プログラムは英語(ラジアン)しか読めないから、翻訳(変換)が必要!


1. 子ども向けプログラミング教材・本

2. 教育用デバイス

3. ゲーム感覚で学べるサービス

4. 数学や算数に役立つツール

No.商品名おすすめポイント
MICRO-BIT V2.21(マイクロビット)新バージョン名 技適取得済 正規品!micro:bit本体+部品が揃っており、電子工作も入門できるキットプログラミング+ハードウェアに興味がある子
ElecFreaks micro:bit スターターキット (micro:bit v2 ボード付き)センサー類やモジュール類が豊富に入っている、拡張性が高いキット初心者から少し発展させたい子どもにも
MICROBITV2.2-SET micro:bit Go v2.2 スターターキット最新の micro:bit V2.2 が含まれたスタンダードなスターターキット初めて micro:bit を使う人向け
スポンサーリンク

コメント

タイトルとURLをコピーしました