a-15 動き(5) 円運動・らせん
Sep 10, 2020
a-15 円運動・らせん
sin()関数とcos()関数は、指定した角度の正弦(サイン)と余弦(コサイン)を-1から1の間の数として返す。arc()関数と同じように、角度はラジアンで指定する。
ラジアンについて
sin()関数
float angle = 0.0; float offset =100; float scalar =50; float speed =0.05; void setup(){ size(500,250); } void draw(){ background(99,171,242); fill(254,253,108); noStroke(); float y1 =offset + sin(angle)*scalar; float y2 =offset + sin(angle+0.4)*scalar; float y3 =offset + sin(angle+0.8)*scalar; ellipse(200,y1,50,50); ellipse(250,y2,50,50); ellipse(300,y3,50,50); angle += speed; }
sin()の値に動きを加えると、サイン波に沿った動きをします。
円運動
float angle = 0.0; float offset =250; float scalar =50; float speed =0.05; void setup(){ size(500,500); } void draw(){ fill(254,253,108); float x = offset + cos(angle)*scalar; float y = offset + sin(angle)*scalar; ellipse(x,y,50,50); angle += speed; }
sin()関数とcos()関数を合わせると円運動を作ることができる。cos()がx座標、sin()がy座標となり、この2つに変数scalerをかけて、回転半径を変更し、変数offsetを加えて回転中心を移動させている。
float angle = 0.0; float offset =250; float scalar =50; float speed =0.05; void setup(){ size(500,500); } void draw(){ background(99,171,242); fill(254,253,108); noStroke(); float x = offset + cos(angle)*scalar; float y = offset + sin(angle)*scalar; ellipse(x,y,50,50); angle += speed; }
background()を入れると、円運動の軌跡は見えません。
らせん
float angle = 0.0; float offset =250; float scalar =5; float speed =0.05; void setup(){ size(500,500); background(99,171,242); fill(254,253,108); noStroke(); } void draw(){ float x = offset + cos(angle)*scalar; float y = offset + sin(angle)*scalar; ellipse(x,y,5,5); angle += speed; scalar += speed; }
scalarの値をフレームごとに大きくしていくと、らせんを描きます。