放物らせん Parabolic Spiral [見て楽しむ三角関数]
Scratchで放物らせんを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつも通りで特筆するような変数はありません。
次に本体です。今回は特定の角度になったら終了するのではなく、線が描画領域の端に到達したら終了します。繰り返しの水色の部分です。
次に準備です。これもいつも通りで、開始点の座標を計算して移動しています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\sqrt{\theta} \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
計算と移動を繰り返して軌跡を描画すると、放物らせんができあがります。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつも通りで特筆するような変数はありません。
次に本体です。今回は特定の角度になったら終了するのではなく、線が描画領域の端に到達したら終了します。繰り返しの水色の部分です。
次に準備です。これもいつも通りで、開始点の座標を計算して移動しています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\sqrt{\theta} \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
計算と移動を繰り返して軌跡を描画すると、放物らせんができあがります。
完成版はこちら。
プラトーの曲線 Plateau Curves [見て楽しむ三角関数]
Scratchでプラトーの曲線を描きます。プラトーは人名で、ベルギーの物理学者だそうです。
今回も片側が交差しています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。mとnは式に出てくる固定値です。
次に本体です。角度を-80度から80度まで変化させるとこの曲線が描けます。0.2度ずつ細かく角度を変えて座標を計算すると滑らかな曲線になります。
次に準備です。mとnはスライダー表示にして、プログラムを修正せずに値を変えられるようにしてもいいのですが、値を大きくすると曲線がすぐに描画領域からはみ出してしまうので、ここではスライダーにはせず、描画前に値を固定しています。
式はこうなっています。今回の曲線は半径を計算する極座標方程式ではなく、XとYを直接計算する媒介変数方程式です。aは倍率(大きさ)、θは角度です。
\[ x=\frac{a\sin((m+n)\theta)}{\sin((m-n)\theta)} \\
y=\frac{2a\sin(m\theta)sin(n\theta)}{\sin((m-n)\theta)} \] 複雑ですね。ここからあの曲線が出てくるのが不思議です。また、準備ブロックで設定しているmやnの値を変えると曲線の形も変わるので、プログラムをいじってみるとおもしろいですよ。
この式をプログラムにするとこうなります。
XもYも分母の式は同じなので、一旦計算して別の変数に入れておき再利用する手もあります。
移動はいつも通りです。
完成版はこちら。
今回も片側が交差しています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。mとnは式に出てくる固定値です。
次に本体です。角度を-80度から80度まで変化させるとこの曲線が描けます。0.2度ずつ細かく角度を変えて座標を計算すると滑らかな曲線になります。
次に準備です。mとnはスライダー表示にして、プログラムを修正せずに値を変えられるようにしてもいいのですが、値を大きくすると曲線がすぐに描画領域からはみ出してしまうので、ここではスライダーにはせず、描画前に値を固定しています。
式はこうなっています。今回の曲線は半径を計算する極座標方程式ではなく、XとYを直接計算する媒介変数方程式です。aは倍率(大きさ)、θは角度です。
\[ x=\frac{a\sin((m+n)\theta)}{\sin((m-n)\theta)} \\
y=\frac{2a\sin(m\theta)sin(n\theta)}{\sin((m-n)\theta)} \] 複雑ですね。ここからあの曲線が出てくるのが不思議です。また、準備ブロックで設定しているmやnの値を変えると曲線の形も変わるので、プログラムをいじってみるとおもしろいですよ。
この式をプログラムにするとこうなります。
XもYも分母の式は同じなので、一旦計算して別の変数に入れておき再利用する手もあります。
移動はいつも通りです。
完成版はこちら。
Freeth's Nephroid [見て楽しむ三角関数]
ScratchでFreeth's Nephroidを描きます。
今回も片側が交差した円のような形です。今回は右側で交差しているのがこれまでとは違う点です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもあまり変わりませんね。
次に本体です。角度を0度から720度まで変化させるとこの曲線が描けます。
準備はいつもだいたい同じです。変数を初期設定し、開始点を計算してそこに移動します。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= a\left(1+2\sin\left(\frac{1}{2}\theta\right)\right)\] この式をプログラムで書くと次のようになります。
最初に半径を計算し、半径と角度からX座標とY座標を計算します。そのままだと若干左寄りに描画されるので、最後にX座標を調整して少し右にずらしています。
移動はいつも通りです。
完成版はこちら。
今回も片側が交差した円のような形です。今回は右側で交差しているのがこれまでとは違う点です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもあまり変わりませんね。
次に本体です。角度を0度から720度まで変化させるとこの曲線が描けます。
準備はいつもだいたい同じです。変数を初期設定し、開始点を計算してそこに移動します。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= a\left(1+2\sin\left(\frac{1}{2}\theta\right)\right)\] この式をプログラムで書くと次のようになります。
最初に半径を計算し、半径と角度からX座標とY座標を計算します。そのままだと若干左寄りに描画されるので、最後にX座標を調整して少し右にずらしています。
移動はいつも通りです。
完成版はこちら。
カージオイド Cardioid [見て楽しむ三角関数]
Scratchでカージオイドを描きます。別名は心臓形です。
過去三回と似たような形の曲線ですね。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。大きさはプログラムで制御するので今回はありません。
次に本体です。二重の繰り返しで大きさを変えながら複数の曲線を描きます。曲線をひとつ描き終わるごとに倍率を小さくし、ペンの色を変えています。
次に準備です。プログラムを実行するごとに一度呼び出されます。
次は「原点に移動」です。曲線をひとつ描く前に開始点を計算してそこに移動します。角度を-180度から180度まで変化させると、この曲線がひとつ描けます。
式はこうなっています。rは半径、aは倍率、θは角度です。
\[ r= a\left(1+\cos(\theta)\right) \] この式をプログラムにすると以下のようになります。この曲線も何もしなければ右寄りに描画されるので、最後にX座標を調整して曲線全体を左に移動します。
移動はいつも通りです。
完成版はこちら。
過去三回と似たような形の曲線ですね。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。大きさはプログラムで制御するので今回はありません。
次に本体です。二重の繰り返しで大きさを変えながら複数の曲線を描きます。曲線をひとつ描き終わるごとに倍率を小さくし、ペンの色を変えています。
次に準備です。プログラムを実行するごとに一度呼び出されます。
次は「原点に移動」です。曲線をひとつ描く前に開始点を計算してそこに移動します。角度を-180度から180度まで変化させると、この曲線がひとつ描けます。
式はこうなっています。rは半径、aは倍率、θは角度です。
\[ r= a\left(1+\cos(\theta)\right) \] この式をプログラムにすると以下のようになります。この曲線も何もしなければ右寄りに描画されるので、最後にX座標を調整して曲線全体を左に移動します。
移動はいつも通りです。
完成版はこちら。
Cayley's Sextic [見て楽しむ三角関数]
ScratchでCayley's Sexticを描きます。sexticは「六次方程式」という意味だそうです。
円の片側が交差していて、前回のパスカルの蝸牛形や前々回のコクレオイドと似たような形です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cosは計算結果を一時的に保持しておくための変数です。そのほかはいつもと同じです。
次に本体です。角度を-360度から360度まで変化させるとこの曲線を描画できます。
次は準備です。いつもと変わらず、開始点を計算してそこに移動しています。
式はこうなっています。rは半径、aは固定の倍率(大きさ)、θは角度です。
\[ \begin{aligned}
r&= 4a\cos^3\left(\frac{1}{3}\theta\right)\\
&=4a\times\cos\left(\frac{1}{3}\theta\right)\times\cos\left(\frac{1}{3}\theta\right)\times\cos\left(\frac{1}{3}\theta\right)
\end{aligned} \] ですので、cosの部分を一度計算しておいて、その結果を三回掛ければよいですね。プログラムにするとこうなります。
この曲線もそのままでは右寄りに描画されますので、最後にX座標を調整して左に少しずらしています。
移動はいつも通りです。
完成版はこちら。
円の片側が交差していて、前回のパスカルの蝸牛形や前々回のコクレオイドと似たような形です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cosは計算結果を一時的に保持しておくための変数です。そのほかはいつもと同じです。
次に本体です。角度を-360度から360度まで変化させるとこの曲線を描画できます。
次は準備です。いつもと変わらず、開始点を計算してそこに移動しています。
式はこうなっています。rは半径、aは固定の倍率(大きさ)、θは角度です。
\[ \begin{aligned}
r&= 4a\cos^3\left(\frac{1}{3}\theta\right)\\
&=4a\times\cos\left(\frac{1}{3}\theta\right)\times\cos\left(\frac{1}{3}\theta\right)\times\cos\left(\frac{1}{3}\theta\right)
\end{aligned} \] ですので、cosの部分を一度計算しておいて、その結果を三回掛ければよいですね。プログラムにするとこうなります。
この曲線もそのままでは右寄りに描画されますので、最後にX座標を調整して左に少しずらしています。
移動はいつも通りです。
完成版はこちら。
パスカルの蝸牛形 Trisectrix Limaçon [見て楽しむ三角関数]
Scratchでパスカルの蝸牛形を描きます。
前回のコクレオイドに少し似ていますが、曲線はもっと単純です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。とくに変わったものはありません。
次に本体です。角度を0度から360度まで変化させるとこの曲線が描画できます。
次に準備です。開始点を計算して移動しています。プログラムを実行すると最初に一回だけ呼び出されます。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= a(1+2\cos(\theta)) \] この式をプログラムにするとこうなります。
最初に半径を計算し、半径と角度からX座標とY座標を計算します。そのまま描画すると、倍率が大きくなった場合に曲線が画面の右にはみ出してしまうので、最後にX座標を調整しています。
移動はいつも通りです。
完成版はこちら。
前回のコクレオイドに少し似ていますが、曲線はもっと単純です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。とくに変わったものはありません。
次に本体です。角度を0度から360度まで変化させるとこの曲線が描画できます。
次に準備です。開始点を計算して移動しています。プログラムを実行すると最初に一回だけ呼び出されます。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= a(1+2\cos(\theta)) \] この式をプログラムにするとこうなります。
最初に半径を計算し、半径と角度からX座標とY座標を計算します。そのまま描画すると、倍率が大きくなった場合に曲線が画面の右にはみ出してしまうので、最後にX座標を調整しています。
移動はいつも通りです。
完成版はこちら。
コクレオイド Cochleoid [見て楽しむ三角関数]
Scratchでコクレオイドを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。プログラムを変えずに曲線の大きさを変えられるように、大きさはスライダー表示にしています。
次に本体です。普通は開始角から終了角まで連続してX座標Y座標を計算しますが、今回は角度が0の場合、座標が原点(0,0)に戻って不要な直線が出てしまいます。そのため繰り返しを二つに分け、0度は避けて計算しています。繰り返しの終了条件が満たされると繰り返しの中の処理は実行せずに繰り返しの外に出ますので、最初の繰り返しでは「角度=0」の処理は行われません。
次に準備です。
今回の式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= \frac{a\sin(\theta)}{\theta} \] この式をプログラムにするとこうなります。
関数の外のシータ(式の分母の部分)はラジアンなので、ラジアンの計算も定義して呼び出します。
移動いつもと同じです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。プログラムを変えずに曲線の大きさを変えられるように、大きさはスライダー表示にしています。
次に本体です。普通は開始角から終了角まで連続してX座標Y座標を計算しますが、今回は角度が0の場合、座標が原点(0,0)に戻って不要な直線が出てしまいます。そのため繰り返しを二つに分け、0度は避けて計算しています。繰り返しの終了条件が満たされると繰り返しの中の処理は実行せずに繰り返しの外に出ますので、最初の繰り返しでは「角度=0」の処理は行われません。
次に準備です。
今回の式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r= \frac{a\sin(\theta)}{\theta} \] この式をプログラムにするとこうなります。
関数の外のシータ(式の分母の部分)はラジアンなので、ラジアンの計算も定義して呼び出します。
移動いつもと同じです。
完成版はこちら。
アステロイド Astroid [見て楽しむ三角関数]
Scratchでアステロイド曲線を描きます。星形です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
bは式に使われている変数で、スライダー表示にして変更できるようにしています。bの値によって星の形が変化します。bは奇数の時に星形になります。
次に本体です。角度を0度から360度まで変化させるとこの曲線を描くことができます。
準備では変数を初期化して開始点を計算し、そこに移動しています。また、描画ごとに違う色を使うように色を乱数で決めています。
式はこうなっています。
\[ x=a\cos^b(\theta) \\
y=a\sin^b(\theta) \] aは倍率(大きさ)、θは角度です。ここでbが出てきました。sin(θ), cos(θ)を何回掛けるかを指定するための変数です。つまり冪(べき)乗のことです。基本的な冪乗の計算をScratchのブロック(関数)にするとこうなります。二分の一乗などはここでは扱わず、与えられた値を整数回掛けています。
底(てい)は掛けられる数、冪(べき)は掛ける回数です。計算結果は後で使えるように一旦「冪乗」という変数に保持しています。冪乗の計算方法が定義できたので次は計算です。
1回目の冪乗の呼び出しにはcos(角度)の計算結果とbを渡しています。また、2回目の冪乗の呼び出しにはsin(角度)の計算結果とbを渡しています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
bは式に使われている変数で、スライダー表示にして変更できるようにしています。bの値によって星の形が変化します。bは奇数の時に星形になります。
b=3 | b=5 |
---|---|
b=7 | b=9 |
次に本体です。角度を0度から360度まで変化させるとこの曲線を描くことができます。
準備では変数を初期化して開始点を計算し、そこに移動しています。また、描画ごとに違う色を使うように色を乱数で決めています。
式はこうなっています。
\[ x=a\cos^b(\theta) \\
y=a\sin^b(\theta) \] aは倍率(大きさ)、θは角度です。ここでbが出てきました。sin(θ), cos(θ)を何回掛けるかを指定するための変数です。つまり冪(べき)乗のことです。基本的な冪乗の計算をScratchのブロック(関数)にするとこうなります。二分の一乗などはここでは扱わず、与えられた値を整数回掛けています。
底(てい)は掛けられる数、冪(べき)は掛ける回数です。計算結果は後で使えるように一旦「冪乗」という変数に保持しています。冪乗の計算方法が定義できたので次は計算です。
1回目の冪乗の呼び出しにはcos(角度)の計算結果とbを渡しています。また、2回目の冪乗の呼び出しにはsin(角度)の計算結果とbを渡しています。
移動はいつも通りです。
完成版はこちら。
サイクロイド Cycloid [見て楽しむ三角関数]
Scratchでサイクロイドを描きます。今回の曲線は単純でつまらないので、色を変化させ、太さと大きさを調節可能にします。カモメ?眉毛?
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。太さと大きさはスライダー表示にして、プログラムを変更しなくても値を変えられるようにしています。
次に本体です。今回は繰り返しは一回です。角度を-360度から360度まで変化させるとこの曲線が描けます。
準備は変数を初期化したり開始座標を計算して移動したりします。色は描画するごとに変化するように乱数を使います。
式はこうなっています。
\[ x=r\left(\theta-\sin(\theta)\right) \\
y=r\left(1-\cos(\theta)\right)\] rは普通は半径(英語でradiusのr)です。ここではrに大きさ(倍率)を当てはめて、曲線の大きさを変化させています。
Scratchでは関数の外側のθはラジアン、関数の引数のθは角度ですので、X座標Y座標を求める前にラジアンも計算しておきます。
上の式をScratchのプログラムにするとこうなります。
移動するときにペンの色の濃さを変えています。
Scratchではペンの色の濃さは数字で指定します。 0に近づくほど濃く、100に近づくほど薄くなります。ここでは濃さの計算にはX座標の絶対値を使っていて、画面の中心に近づくほどX座標の値が小さくなるので色が濃く、中心から離れるほどX座標の値が大きくなるので色が薄くなります。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。太さと大きさはスライダー表示にして、プログラムを変更しなくても値を変えられるようにしています。
次に本体です。今回は繰り返しは一回です。角度を-360度から360度まで変化させるとこの曲線が描けます。
準備は変数を初期化したり開始座標を計算して移動したりします。色は描画するごとに変化するように乱数を使います。
式はこうなっています。
\[ x=r\left(\theta-\sin(\theta)\right) \\
y=r\left(1-\cos(\theta)\right)\] rは普通は半径(英語でradiusのr)です。ここではrに大きさ(倍率)を当てはめて、曲線の大きさを変化させています。
Scratchでは関数の外側のθはラジアン、関数の引数のθは角度ですので、X座標Y座標を求める前にラジアンも計算しておきます。
上の式をScratchのプログラムにするとこうなります。
移動するときにペンの色の濃さを変えています。
Scratchではペンの色の濃さは数字で指定します。 0に近づくほど濃く、100に近づくほど薄くなります。ここでは濃さの計算にはX座標の絶対値を使っていて、画面の中心に近づくほどX座標の値が小さくなるので色が濃く、中心から離れるほどX座標の値が大きくなるので色が薄くなります。
完成版はこちら。
四つ葉 Quadrifolium (2) [見て楽しむ三角関数]
Scratchで四つ葉を描きます。前回とは違い、曲線も式も複雑です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
まず変数です。少ないですね。
次に本体です。85回繰り返して描画するために二重の繰り返しにしています。内側の繰り返しで四つ葉を一つ描きます。外側の繰り返しでは四つ葉を少しずつ大きくして85回処理しています。色も少しずつ薄くします。
次に準備です。葉っぱですので、始める時の色は濃い緑色に固定しています。
この四つ葉の式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\left(\sin^2(2\theta)+\frac{\sin^2(4\theta)}{2}\right) \]
この式をScratchで一行のプログラムに書くと画面からはみ出してしまうので、スクロールが不要なように半径の計算を3行に分けています。
1. かっこの中の+の左部分を半径に設定
2. かっこの中の+の右部分を半径に追加
3. かっこの外側の掛け算で半径の計算が終了
その後、半径と角度を使ってX座標とY座標を求めます。
移動はいつも同じです。
完成版はこちら。
さて、式が複雑だったので、分解するとどういう曲線になるのか試してみたのが以下の表です。
元の式は\[ r=a\left(\sin^2(2\theta)+\frac{\sin^2(4\theta)}{2}\right) \]ですので足し算の左辺と右辺に分けました。式からは倍率aは省いていますが、描画には使っています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
まず変数です。少ないですね。
次に本体です。85回繰り返して描画するために二重の繰り返しにしています。内側の繰り返しで四つ葉を一つ描きます。外側の繰り返しでは四つ葉を少しずつ大きくして85回処理しています。色も少しずつ薄くします。
次に準備です。葉っぱですので、始める時の色は濃い緑色に固定しています。
この四つ葉の式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\left(\sin^2(2\theta)+\frac{\sin^2(4\theta)}{2}\right) \]
この式をScratchで一行のプログラムに書くと画面からはみ出してしまうので、スクロールが不要なように半径の計算を3行に分けています。
1. かっこの中の+の左部分を半径に設定
2. かっこの中の+の右部分を半径に追加
3. かっこの外側の掛け算で半径の計算が終了
その後、半径と角度を使ってX座標とY座標を求めます。
移動はいつも同じです。
完成版はこちら。
さて、式が複雑だったので、分解するとどういう曲線になるのか試してみたのが以下の表です。
元の式は\[ r=a\left(\sin^2(2\theta)+\frac{\sin^2(4\theta)}{2}\right) \]ですので足し算の左辺と右辺に分けました。式からは倍率aは省いていますが、描画には使っています。
左辺の式 | 右辺の式 | 乗算 | 加算 |
---|---|---|---|
\[r=\sin(2\theta)\] | \[r=\sin(4\theta)\] | \[r=\sin(2\theta)\times\sin(4\theta)\] | \[r=\sin(2\theta)+\sin(4\theta)\] |
\[r=\frac{\sin(4\theta)}{2}\] | \[ r=\sin(2\theta)\times\frac{\sin(4\theta)}{2} \] | \[ r=\sin(2\theta)+\frac{\sin(4\theta)}{2} \] | |
\[r=\sin^2(2\theta)\] | \[r=\sin^2(4\theta)\] | \[r=\sin^2(2\theta)\times\sin^2(4\theta)\] | \[r=\sin^2(2\theta)+\sin^2(4\theta)\] |
\[r=\frac{\sin^2(4\theta)}{2}\] | \[ r=\sin^2(2\theta)\times\frac{\sin^2(4\theta)}{2} \] | \[ r=\sin^2(2\theta)+\frac{\sin^2(4\theta)}{2} \] | |