三角関数とプログラミングの世界
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. プログラミングでの活用イメージ
- ゲームのジャンプ →
y = math.sin(angle) - キャラクターの回転 →
x = math.cos(angle)、y = math.sin(angle) - 振り子や波の動き →
y = amplitude * math.sin(time) - マウスの角度に合わせた向き →
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()
🔹 プログラムの説明
math.sin()で高さを計算 → キャラクターがジャンプしているように動くx = step - 180で左右に移動amplitudeを変えるとジャンプの高さが変わる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. 子ども向けプログラミング教材・本
- Scratch や Python 入門書(小学生向け)
2. 教育用デバイス
- micro:bit(マイクロビット)
- 小学生でもLEDやセンサーを使って遊べる
- Raspberry Pi Pico / Arduinoスターターキット
- プログラミング+電子工作を親子で体験できる
3. ゲーム感覚で学べるサービス
- オンライン学習サービス
- Udemy の子ども向け Python / Scratch 講座
4. 数学や算数に役立つツール
- 分度器や三角定規セット(デジタル分度器)
→ 三角関数の記事と親和性が高い - グラフ関数電卓(Casio fxシリーズなど)
→ sin, cos, tan がすぐ試せる
| 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 を使う人向け |


コメント