PROGRAM PYTHON

Pygame超入門【第27回 三角関数を使った線分表示】

 

 

三角関数を使ってみよう

今回は数学ライブラリーの三角関数を使って、線分を表示させてみましょう。
三角関数とは、高校で習うサイン(sine)、コサイン(cosine)、タンジェント(tangent)のことです。
三角関数を使うと角度と線の長さで、X座標とY座標を求めることができます。
具体的には、角度θと線の長さrが分かれば、X座標はコサイン、Y座標はサインを使えば求められます。

pystart27-1a

サイン、コサインを使って座標を求める

まずサイン、コサインを使うために、mathライブラリーをインポートします。

import math

サイン、コサインの求め方は、以下のようになります。
引数にラジアン(radian)を使います。

■サイン(sin)の求め方
math.sin(ラジアン)

■コサイン(cos)の求め方
math.cos(ラジアン)

メモ

ラジアンとは角度の単位で、日本語だと弧度法といいます。(学校で習う90度や180度というのは度数法といいます)
新明解では「円の半径と等しい長さの円弧に対応する中心角の大きさ」となっています。
上記の説明では分かりづらいので、ここでは180度はπラジアン、360度は2πラジアンと覚えておきましょう。
(π≒3.14とすると、1ラジアンは180÷3.14で約57.29度となります)

ラジアンの求め方は、以下のようになります。

math.radians(角度)

角度が45度、線の長さが10の場合の座標の求め方は、以下のようになります。
X座標がコサイン(cos)、Y座標がサイン(sin)で求められます。
round()関数で小数をまるめています。
以下の例では、X座標が7、Y座標が7になります。

 実行例
>>> round(math.cos(math.radians(45))*10)
7
>>> round(math.sin(math.radians(45))*10)
7

 

三角関数を使って線分を表示するプログラム

上記のことをふまえて、線分を表示するプログラムを書いてみましょう。
以下のプログラムは、円を描いて円の中心から円周までの線分を描画します。
角度を0にしているので、円の中心から真っすぐ右に線分が表示されます。
座標の位置はサイン、コサインで計算した値を円の中心(この場合、200,200)に置き換える必要があります。
また、サイン、コサインの結果は左下の座標を(0,0)としていますが、画面の座標は左上の座標が(0,0)なので、Y座標の向きが逆になります。
そのため、サインで得た値がプラスであれば座標は上に向かうので、線分の開始地点からマイナスしています。

pystart27-2a

プログラムを実行すると、以下の画像が表示されます。

pystart27-1

 

三角関数を使って複数の線分を表示するプログラム

以下のプログラムは、複数の線分を表示するプログラムです。
0、45、90、135、180、225、270、315度の線分を表示します。
上記のプログラム(pystart27-1.py)の22~29行目を修正しています。

プログラムを実行すると、以下の画像が表示されます。

pystart27-2

 

 

-PROGRAM, PYTHON
-,