デカルトの正葉線 Folium of Descartes [見て楽しむ三角関数]
Scratchでデカルトの正葉線を描きます。
前々回のマクローリンの三等分曲線や、前回のストロフォイドに似ています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cos3乗、cos角度、sin3乗、sin角度は計算結果を一時的に保持しておくための変数です。その他はいつもと同じです。
次に本体です。角度を-34度から120度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。
次に準備です。本体から呼び出されます。変数の初期化、ペンの設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=\frac{3a\sin(\theta)\cos(\theta)}{sin^3(\theta)+cos^3(\theta)} \] この式をプログラムにすると次のようになります。まず半径を計算し、半径と角度からX座標とY座標を計算しています。
半径の計算を一行に書くことも可能ですが、画面からはみ出して見にくくなるので、ある程度の単位に分けて計算します。\(\sin(\theta)\)と\(\cos(\theta)\)はなんども出てくるので、一度計算しておいて結果を使いまわしています。
移動はこうなっています。
描画領域の外側ではペンをあげ、内側ではペンを下ろしています。こうすると描画領域の境界に余計な線が出ずに綺麗に描画できます。その後、計算結果の座標(X, Y)に移動すると、軌跡が曲線になります。
完成版はこちら。
前々回のマクローリンの三等分曲線や、前回のストロフォイドに似ています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cos3乗、cos角度、sin3乗、sin角度は計算結果を一時的に保持しておくための変数です。その他はいつもと同じです。
次に本体です。角度を-34度から120度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。
次に準備です。本体から呼び出されます。変数の初期化、ペンの設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=\frac{3a\sin(\theta)\cos(\theta)}{sin^3(\theta)+cos^3(\theta)} \] この式をプログラムにすると次のようになります。まず半径を計算し、半径と角度からX座標とY座標を計算しています。
半径の計算を一行に書くことも可能ですが、画面からはみ出して見にくくなるので、ある程度の単位に分けて計算します。\(\sin(\theta)\)と\(\cos(\theta)\)はなんども出てくるので、一度計算しておいて結果を使いまわしています。
移動はこうなっています。
描画領域の外側ではペンをあげ、内側ではペンを下ろしています。こうすると描画領域の境界に余計な線が出ずに綺麗に描画できます。その後、計算結果の座標(X, Y)に移動すると、軌跡が曲線になります。
完成版はこちら。
ストロフォイド Strophoid [見て楽しむ三角関数]
Scratchでストロフォイドを描きます。形は前回のマクローリンの三等分曲線に似ていますが、左右が反転しています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもと変わりありません。
次に本体です。角度を-77度から77度まで、0.1度ずつ変化させながら計算、移動を繰り返しています。綺麗に描画するため角度の変化量を小さくしており、計算や描画に時間がかかります。ターボモードをお勧めします。
次に準備です。これは本体から呼び出されます。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=-\frac{a\cos(2\theta)}{\cos(\theta)} \] この式をプログラムにすると次のようになります。
移動は前回と同じで、計算結果が描画範囲に収まるかどうかによってペンの上げ下げを行なっています。
計算、移動ともに本体の繰り返しの中から呼び出されます。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもと変わりありません。
次に本体です。角度を-77度から77度まで、0.1度ずつ変化させながら計算、移動を繰り返しています。綺麗に描画するため角度の変化量を小さくしており、計算や描画に時間がかかります。ターボモードをお勧めします。
次に準備です。これは本体から呼び出されます。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=-\frac{a\cos(2\theta)}{\cos(\theta)} \] この式をプログラムにすると次のようになります。
移動は前回と同じで、計算結果が描画範囲に収まるかどうかによってペンの上げ下げを行なっています。
計算、移動ともに本体の繰り返しの中から呼び出されます。
完成版はこちら。
マクローリンの三等分曲線 [見て楽しむ三角関数]
Scratchでマクローリンの三等分曲線を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもと変わりません。
次に本体です。角度を-90度から90度まで変化させながら計算、移動を繰り返すとこの曲編が描画できます。曲線がなめらかになるように、角度は0.1度ずつ変化させています。このため描画が遅くなりますので、実行時にはターボモードをお勧めします。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、開始座標に移動しています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\left(4\cos(\theta)-\frac{1}{\cos(\theta)}\right) \] この式をプログラムにすると次のようになります。
移動はいつもとは少し違います。座標の計算結果が描画領域の外側になった場合にペンが降りていると、描画領域の縁に余分な線が出ます。このため、必要に応じてペンの上げ下げを行なっています。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。いつもと変わりません。
次に本体です。角度を-90度から90度まで変化させながら計算、移動を繰り返すとこの曲編が描画できます。曲線がなめらかになるように、角度は0.1度ずつ変化させています。このため描画が遅くなりますので、実行時にはターボモードをお勧めします。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、開始座標に移動しています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\left(4\cos(\theta)-\frac{1}{\cos(\theta)}\right) \] この式をプログラムにすると次のようになります。
移動はいつもとは少し違います。座標の計算結果が描画領域の外側になった場合にペンが降りていると、描画領域の縁に余分な線が出ます。このため、必要に応じてペンの上げ下げを行なっています。
完成版はこちら。
Equilateral Trefoil [見て楽しむ三角関数]
ScratchでEquilateral Trefoilを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
次に本体です。角度を0度から180度まで変化させながら計算、移動を繰り返すとこの曲線が描けます。なめらかな曲線になるように0.1度ずつ角度を変えており、その分描画は遅くなります。ターボモードにした方がいいでしょう。
次に準備です。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=\frac{a}{\cos(3\theta)} \] この式をプログラムにすると次のようになります。
今回の移動はいつもの座標の移動に加えてペンの上げ下げを行なっています。曲線が一定の範囲に収まるようにです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
次に本体です。角度を0度から180度まで変化させながら計算、移動を繰り返すとこの曲線が描けます。なめらかな曲線になるように0.1度ずつ角度を変えており、その分描画は遅くなります。ターボモードにした方がいいでしょう。
次に準備です。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=\frac{a}{\cos(3\theta)} \] この式をプログラムにすると次のようになります。
今回の移動はいつもの座標の移動に加えてペンの上げ下げを行なっています。曲線が一定の範囲に収まるようにです。
完成版はこちら。
Cyclic-Harmonic Curve [見て楽しむ三角関数]
ScratchでCyclic-Harmonic Curveを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。eとnは式に出てくる固定値で、スライダー表示にして値を変えられるようにしています。値を変えると曲線の形が様々に変化しますので、試してみてください。
次に本体です。角度を0度から360度まで変化せながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度、eとnはスライダーで値を設定する変数です。
\[ r=a\left(1+e\cos(n\theta)\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。eとnは式に出てくる固定値で、スライダー表示にして値を変えられるようにしています。値を変えると曲線の形が様々に変化しますので、試してみてください。
次に本体です。角度を0度から360度まで変化せながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度、eとnはスライダーで値を設定する変数です。
\[ r=a\left(1+e\cos(n\theta)\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
Septic [見て楽しむ三角関数]
ScratchでSepticを描きます。Septicは「7次式」という一般的な言葉のようです。ネタ元のサイトにそう書いてあるのでそのまま使います。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。「cos角度」は何度も出てくるcosの計算結果を保存しておき、再利用するための変数です。その他はいつもと同じです。
次に本体です。角度を0度から127度まで変化させながら計算、移動を繰り返すと、この曲線が描画できます。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算を行い、開始座標に移動しています。
式はこうなっています。
\[ x=\frac{\cos(\theta)(3\cos^2(\theta)-3\cos(\theta)+1)}{2\cos^3(\theta)-2\cos(\theta)+1} \\
y=\frac{\cos^2(\theta)\sin(\theta)}{2\cos^3(\theta)-2\cos(\theta)+1}\tan^2\left(\frac{\theta}{2}\right) \] よくこんなこと考えますよね。複雑すぎて訳がわかりませんが、プログラムにすることはできます。\(cos(\theta)\) は何度も出てきますので、先に計算しておいて値を使いまわします。
XとYの式をそのまま一行で書こうとすると長すぎるので、分割して複数行で計算しています。元の数式には倍率は出てきませんが、曲線の大きさを調整するために画面上のスライダーで指定した値を掛けています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。「cos角度」は何度も出てくるcosの計算結果を保存しておき、再利用するための変数です。その他はいつもと同じです。
次に本体です。角度を0度から127度まで変化させながら計算、移動を繰り返すと、この曲線が描画できます。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算を行い、開始座標に移動しています。
式はこうなっています。
\[ x=\frac{\cos(\theta)(3\cos^2(\theta)-3\cos(\theta)+1)}{2\cos^3(\theta)-2\cos(\theta)+1} \\
y=\frac{\cos^2(\theta)\sin(\theta)}{2\cos^3(\theta)-2\cos(\theta)+1}\tan^2\left(\frac{\theta}{2}\right) \] よくこんなこと考えますよね。複雑すぎて訳がわかりませんが、プログラムにすることはできます。\(cos(\theta)\) は何度も出てきますので、先に計算しておいて値を使いまわします。
XとYの式をそのまま一行で書こうとすると長すぎるので、分割して複数行で計算しています。元の数式には倍率は出てきませんが、曲線の大きさを調整するために画面上のスライダーで指定した値を掛けています。
移動はいつも通りです。
完成版はこちら。
Abdank-AbakanowiczのQuadratrix [見て楽しむ三角関数]
ScratchでAbdank-AbakanowiczのQuadratrixを描きます。Abdank-Abakanowiczは数学者の名前です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。Rは定数で、準備で値を設定します。
次に本体です。角度を-540度から540度まで変化させながら計算、移動を繰り返すと、この曲線が描けます。
次に準備です。変数の初期設定、ペンの属性などの設定、開始座標の計算を行い、開始座標に移動しています。
倍率は式には出てきませんが、曲線を拡大するために使っていて、51に設定するとY座標からの高さが最高で51になります。
式はこうなっています。Rは定数、θは角度です。
\[ x=R\sin(\theta) \\
y=\frac{R^2}{2}(\theta+\sin(\theta)\cos(\theta)) \] この式をプログラムにすると次のようになります。sin関数やcos関数の引数のθはScratchでは角度ですが、関数の外にあるθはラジアンですので、ラジアンも計算して使っています。
倍率は式には出てきませんが、曲線を拡大するために使っています。Rと倍率を変えると曲線が変化しますので、興味があればプログラムを変えながら試してみてください。
計算から呼び出すラジアンは次のような処理になります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。Rは定数で、準備で値を設定します。
次に本体です。角度を-540度から540度まで変化させながら計算、移動を繰り返すと、この曲線が描けます。
次に準備です。変数の初期設定、ペンの属性などの設定、開始座標の計算を行い、開始座標に移動しています。
倍率は式には出てきませんが、曲線を拡大するために使っていて、51に設定するとY座標からの高さが最高で51になります。
式はこうなっています。Rは定数、θは角度です。
\[ x=R\sin(\theta) \\
y=\frac{R^2}{2}(\theta+\sin(\theta)\cos(\theta)) \] この式をプログラムにすると次のようになります。sin関数やcos関数の引数のθはScratchでは角度ですが、関数の外にあるθはラジアンですので、ラジアンも計算して使っています。
倍率は式には出てきませんが、曲線を拡大するために使っています。Rと倍率を変えると曲線が変化しますので、興味があればプログラムを変えながら試してみてください。
計算から呼び出すラジアンは次のような処理になります。
移動はいつも通りです。
完成版はこちら。
ひげぜんまい曲線 Balance Spring Curve [見て楽しむ三角関数]
Scratchでひげぜんまい曲線を描きます。ひげぜんまいは時計の中に入っている部品だそうです。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aは倍率、θは角度、eはネイピア数、kとmは画面上でスライダー表示にしてパラメータ化しています。スライダーで値を変えると曲線の形が変わりますよ。
\[ r=\frac{a}{1+ke^{m\theta}} \] 次に変数です。kとmと大きさは上にも書いたようにスライダーにして画面上で値を調整できようにしています。
次に本体です。式に与える角度を変化させながら計算、移動を繰り返しています。今回の曲線は円の外側から中心に向かって描画しますので、画面の中心部に十分近寄ったところで処理を中止しています。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算を行い、開始座標に移動しています。
次に計算です。上に書いた式をプログラムにすると次のようになります。
計算から呼び出すラジアンの計算は次のようになります。
移動はいつも通りです。計算で求められた座標(X, Y)に移動します。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aは倍率、θは角度、eはネイピア数、kとmは画面上でスライダー表示にしてパラメータ化しています。スライダーで値を変えると曲線の形が変わりますよ。
\[ r=\frac{a}{1+ke^{m\theta}} \] 次に変数です。kとmと大きさは上にも書いたようにスライダーにして画面上で値を調整できようにしています。
次に本体です。式に与える角度を変化させながら計算、移動を繰り返しています。今回の曲線は円の外側から中心に向かって描画しますので、画面の中心部に十分近寄ったところで処理を中止しています。
次に準備です。ペンの初期設定、変数の初期設定、開始座標の計算を行い、開始座標に移動しています。
次に計算です。上に書いた式をプログラムにすると次のようになります。
計算から呼び出すラジアンの計算は次のようになります。
移動はいつも通りです。計算で求められた座標(X, Y)に移動します。
完成版はこちら。
ワットの曲線 Watt's Curve [見て楽しむ三角関数]
Scratchでワットの曲線を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
今回は式から始めます。rは半径、a, b, cは固定値、θは角度です。
\[ r^2=b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2 \] この式をr=の形式にすると次のようになります。
\[ r=\sqrt{b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2} \] ±の記号があるので、プラス用の式とマイナス用の式を実装します。式が二つなので、今回はスプライトを式ごとに二つ作り、上半分と下半分を別々に描画しています。
このため、上と下で違う色を使っています。
また、後で出てきますが、二つの式に共通する処理はステージに定義しています。
次に変数です。ステージの変数はすべてのスプライト用にしてプラスの式とマイナスの式の両方から参照できるようにします。
各スプライトでは、ステージで定義した変数に加えて式や描画に必要な変数を用意します。同じ名前の変数を二つのスプライトで使うので、各スプライトで「このスプライトのみ」として定義します。
次に本体です。緑色の旗をクリックすると、ステージに定義した本体を実行します。
ステージの本体では二つのスプライトから参照される変数を初期設定し、最後に「初期設定完了」イベントを送っています。
二つの描画用スプライトはこのイベントを受け取ると描画を開始します。
角を0度から361度まで変化させながら計算、移動を繰り返すと曲線が描画できます。この処理は上のスプライトと下のスプラストで共通で、両方のスプライトに同じ内容を定義します。
次に準備です。この処理も上のスプライトと下のスプライトで共通です。
上半分の曲線の計算は次のようになります。上のスプライトに定義します。式が長いので、右側のカッコの中を一旦、変数zに入れておき、そのあとの計算に使っています。
また、下半分の曲線の計算は次のようになります。こちらは下のスプライトに定義します。
違いは、二行目の式の+と-の部分です。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
今回は式から始めます。rは半径、a, b, cは固定値、θは角度です。
\[ r^2=b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2 \] この式をr=の形式にすると次のようになります。
\[ r=\sqrt{b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2} \] ±の記号があるので、プラス用の式とマイナス用の式を実装します。式が二つなので、今回はスプライトを式ごとに二つ作り、上半分と下半分を別々に描画しています。
このため、上と下で違う色を使っています。
また、後で出てきますが、二つの式に共通する処理はステージに定義しています。
次に変数です。ステージの変数はすべてのスプライト用にしてプラスの式とマイナスの式の両方から参照できるようにします。
各スプライトでは、ステージで定義した変数に加えて式や描画に必要な変数を用意します。同じ名前の変数を二つのスプライトで使うので、各スプライトで「このスプライトのみ」として定義します。
次に本体です。緑色の旗をクリックすると、ステージに定義した本体を実行します。
ステージの本体では二つのスプライトから参照される変数を初期設定し、最後に「初期設定完了」イベントを送っています。
二つの描画用スプライトはこのイベントを受け取ると描画を開始します。
角を0度から361度まで変化させながら計算、移動を繰り返すと曲線が描画できます。この処理は上のスプライトと下のスプラストで共通で、両方のスプライトに同じ内容を定義します。
次に準備です。この処理も上のスプライトと下のスプライトで共通です。
上半分の曲線の計算は次のようになります。上のスプライトに定義します。式が長いので、右側のカッコの中を一旦、変数zに入れておき、そのあとの計算に使っています。
また、下半分の曲線の計算は次のようになります。こちらは下のスプライトに定義します。
違いは、二行目の式の+と-の部分です。
移動はいつも通りです。
完成版はこちら。
バタフライ曲線 Butterfly Curve [見て楽しむ三角関数]
Scratchでバタフライ曲線を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。sinとsin5乗は計算の途中結果を保存しておくための変数です。
次に本体です。曲線の大きさ(倍率)と曲線の色を少しずつ変えながら12本のバタフライ曲線を描いています。
次に準備です。ペンの準備と変数の初期設定を行なっています。
バタフライ曲線一本を描く処理は次のようになります。角度を0度から360度まで変化させながら計算、移動を繰り返すと、バタフライ曲線が一本描画できます。曲線が滑らかになるように、角度は0.1度ずつ変化させています。普通に実行すると時間がかかるので、Scratchではターボモードにするのがお勧めです。
これまでは本体で二重の繰り返しにしていましたが、今回は内側の繰り返しを外出ししています。外出しにあまり意味はありませんが、一般的には一つの関数や処理が長くなりそうな時には分割すると理解しやすくなります。
次は「開始点に移動」です。一つのバタフライ曲線を描き始める前に開始点に移動しておきます。
式はこうなっています。rは半径、θは角度、最初のeはネイピア数と呼ばれ、値は2.71828...です。eの階乗を計算する演算(関数)はScratchに最初から備わっています。
\[ r=e^{sin(\theta)}-2\cos(4\theta)+sin^5\left(\frac{2\theta-\pi}{24}\right) \] ここからなぜ蝶のような曲線が出てくるのかはよくわかりません。この式をプログラムにすると次のようになります。式が長いのでプログラムでは分割して計算しています。
試してみるとわかりますが、実は式の最後のsin5乗の値は足しても引いても式から取り除いても最終的な曲線にそれほど大きな影響はありません。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。sinとsin5乗は計算の途中結果を保存しておくための変数です。
次に本体です。曲線の大きさ(倍率)と曲線の色を少しずつ変えながら12本のバタフライ曲線を描いています。
次に準備です。ペンの準備と変数の初期設定を行なっています。
バタフライ曲線一本を描く処理は次のようになります。角度を0度から360度まで変化させながら計算、移動を繰り返すと、バタフライ曲線が一本描画できます。曲線が滑らかになるように、角度は0.1度ずつ変化させています。普通に実行すると時間がかかるので、Scratchではターボモードにするのがお勧めです。
これまでは本体で二重の繰り返しにしていましたが、今回は内側の繰り返しを外出ししています。外出しにあまり意味はありませんが、一般的には一つの関数や処理が長くなりそうな時には分割すると理解しやすくなります。
次は「開始点に移動」です。一つのバタフライ曲線を描き始める前に開始点に移動しておきます。
式はこうなっています。rは半径、θは角度、最初のeはネイピア数と呼ばれ、値は2.71828...です。eの階乗を計算する演算(関数)はScratchに最初から備わっています。
\[ r=e^{sin(\theta)}-2\cos(4\theta)+sin^5\left(\frac{2\theta-\pi}{24}\right) \] ここからなぜ蝶のような曲線が出てくるのかはよくわかりません。この式をプログラムにすると次のようになります。式が長いのでプログラムでは分割して計算しています。
試してみるとわかりますが、実は式の最後のsin5乗の値は足しても引いても式から取り除いても最終的な曲線にそれほど大きな影響はありません。
移動はいつも通りです。
完成版はこちら。