SSブログ

カッシーニの卵形線 Cassini Ovals [見て楽しむ三角関数]

Scratchカッシーニの卵形線を描きます。8曲線の第8回です。

[]

曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。

最初に変数です。倍角と比率は計算で何回か使う値を先に計算して保持しておくための変数です。aは曲線一本ごとに少しずつ変化させる係数です。

[変数]

次に本体です。二重の繰り返しで複数の曲線を描いています。内側の繰り返しで角度を0度から360度まで変化させて曲線一本を描きます。曲線を一本描き終えたら次の曲線を描くために変数やペンの色を変化させています。

[本体]

次に準備です。プログラムを実行すると最初に一度だけ呼び出され、ペンの色を設定したり変数を初期化します。

[初期設定]

次に「開始点」です。いつもとは名前が違いますがやっていることは同じで、新しい曲線を描き始めるときに開始点を計算して移動しています。

[準備]

式はこうなっています。rは半径、aとbは係数、θは角度です。この式を見たからといって上のような曲線は想像できませんが、プログラムの元ネタなので書いておきます。
\[ r^2=a^2\left(\cos(2\theta)\pm\sqrt{\left(\frac{b}{a}\right)-sin^2(2\theta)}\right) \] 左辺がrの二乗になっていますので、r=の形式に変換します。
\[ r=\sqrt{a^2\left(\cos(2\theta)\pm\sqrt{\left(\frac{b}{a}\right)-sin^2(2\theta)}\right)} \] 今回の式もプログラムで一行に書くことは可能ですが、Scratchの画面からはみ出してしまうので、分割して式の右側から少しずつ半径を計算していきます。上の式に出てくるbは下のプログラムでは1に固定しています。

[計算]

移動はいつも通りです。

[移動]

完成版はこちら

この曲線、Wolfram MathWorldを見ると実は二つの空間の中にも曲線が存在するようです。描き方がわかるかたはぜひ教えてください。
nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。