私は高校生以来、三角関数を使っていなかったので完全に忘れていました。
processingのために三角関数を思い出したい人のための記事です。
まずは英単語を把握
三角関数に関する用語が「英語」でどのように記されるのか、確認です。
基本的にはコードは英語をベースに書かれていますし、世界で公開されているチュートリアルやパッチも英語ですから、英語での表記を把握することで理解が早くなります。
長さ系
diameter 直径
radius 半径
角度系
angle 角
degree 角度
radian ラジアン(これについては後ほど説明します)
円周系
π パイ= 円周率
circumference 円周
その他
trigonometric function 三角関数
実際にはどのようにこれらの単語が使われているか
以下、processing公式のPIの説明です。
https://processing.org/reference/PI.html
PI is a mathematical constant with the value 3.14159265358979323846. It is the ratio of the circumference of a circle to its diameter. It is useful in combination with the trigonometric functions sin() and cos().
PI(π)は数学において用いられる定数で、3.14159265358979323846という値です。これは円周と直径の比です。三角関数のsinやcosと一緒に用いる場合に有用です。
Piとは?
以下引用です。
Pierce, Rod, 2016, ‘Pi’, Math Is Fun, Available at: <http://www.mathsisfun.com/numbers/pi.html>. [Accessed 21 Mar 2016]
- 半径1の円を書きます。
- 円を半分だけ進んだ距離は、3.14159265…です。この数字はPi(π)として知られています。
- 次に直径1の半円を書いてみましょう。
- 円周(円を一周する距離)もPiになります。
- Pi(π)は:円周と円の直径の比です。
- 次の図を書くと覚えやすくなります。
ということは?
ということは直径にπをかければ、円周がわかります。直径は、半径の2倍ですから、半径に2をかけてπをかければ、円周がわかります。
Processinで書くと?
プロセシングにおいて、円周率は「PI」です。他にもPIの二倍や半分、1/4も用意されています。
TWO_PI HALF_PI QUARTER_PI |
1 2 3 4 5 |
int r;//半径用の変数を用意します。 r=1;//半径を1とします。 println("円周率: "+PI);//円周率を表示 println("円周の半分: "+r*PI);//半径*円周率 println("円周: "+r*2*PI);//直径(半径×2)×円周率 |
radianと角度(degree)の関係
日常生活では角度を表すためにをdegree(60°、90°等)を使いますが、プログラミングにおいてはradian(π=3.14159..=180°、1=57.29..°)を主に使います。
何故か?なぜかはよくわかりません。が、度数の気持ちで以下のように書くとうまくいきません。単なる丸になってしまいます。
1 2 3 |
size(600,600); //arc( 円弧の中心のx座標, 円弧の中心のy座標, 横の直径, 縦の直径, 弧を描き始める角度, 円弧を描き終える角度 ); arc(width/2, height/2, 400 , 400, 90, 270); |
つまりprocessingの中で角度を指定するときに90°、270°という気持ちで書いても通じないということです。
ではどうすればいいか。radianをベースに角度を書いていきます。
ラジアン | 度数 |
PI/2(HALF_PI) | 90° |
PI | 180° |
2*π(TWO_PI) | 360° |
x*π/180 | x° |
radianを使って書くと次のようになります。これで上手く動きます。
1 2 3 4 |
size(600,600); //arc( 円弧の中心のx座標, 円弧の中心のy座標, 横の直径, 縦の直径, 弧を描き始める角度, 円弧を描き終える角度 ); //arc(width/2, height/2, 400 , 400, 90, 270); arc(width/2, height/2, 400 , 400, PI/2, PI*3); |
PIを使って考えるのが面倒な人は、次のように書いてもOKです。radians(角度)という関数を使うと、角度をradianに変換してくれます。
1 |
println(radians(180));//3.14150..PIの近似値がでる |
反対にradiansの単位のものを角度に直すこともできます。あまり使わないと思いますが。
1 |
println(degrees(PI));//180がでます |
dd
One comment