涙曲線 Teardrop Curve [見て楽しむ三角関数]
Scratchで涙曲線を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。「sin半分」はsin関数の計算結果を繰り返して使うのために、一時的に値を保持しておくための変数です。そのほかの変数はこれまでと同じです。
次に本体です。角度を0度から360度まで変化されるとこの曲線が描けます。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。
式はこうなっています。θは角度です。mはsin((1/2)θ)を何回掛けるかを指定し、この回数によって曲線の形が変化します。
\[ x= \cos(\theta)\\
y=\sin(\theta)\sin^m\left(\frac{1}{2}\theta\right) \] この式をプログラムにすると次のようになります。m=7で掛け算を7回繰り返しています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。「sin半分」はsin関数の計算結果を繰り返して使うのために、一時的に値を保持しておくための変数です。そのほかの変数はこれまでと同じです。
次に本体です。角度を0度から360度まで変化されるとこの曲線が描けます。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。
式はこうなっています。θは角度です。mはsin((1/2)θ)を何回掛けるかを指定し、この回数によって曲線の形が変化します。
\[ x= \cos(\theta)\\
y=\sin(\theta)\sin^m\left(\frac{1}{2}\theta\right) \] この式をプログラムにすると次のようになります。m=7で掛け算を7回繰り返しています。
移動はいつも通りです。
完成版はこちら。
チェバの五等分曲線 5 Sectrix of Ceva [見て楽しむ三角関数]
Scratchでチェバの五等分曲線を描きます。8曲線の第13回・最終回です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
次に本体です。角度を1度から361度まで変化させるとこの曲線が描けます。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。開始角度は1度に設定しています。0度から始めると画面中央から右方向に不要な線が出てしまうためです。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\frac{\sin(5\theta)}{\sin(\theta)} \] この式をプログラムにすると次のようになります。まず半径を計算し、角度と半径を使ってX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。
次に本体です。角度を1度から361度まで変化させるとこの曲線が描けます。
次に準備です。変数の初期設定、ペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。開始角度は1度に設定しています。0度から始めると画面中央から右方向に不要な線が出てしまうためです。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\frac{\sin(5\theta)}{\sin(\theta)} \] この式をプログラムにすると次のようになります。まず半径を計算し、角度と半径を使ってX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
チェバのサイクロイド Cycloid of Ceva [見て楽しむ三角関数]
Scratchでチェバのサイクロイドを描きます。8曲線の第12回です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。XとYは曲線の座標、倍率と大きさは曲線の大きさ、半径は式を計算して求める値、角度は三角関数に与える角度です。
次に本体です。0度から360度まで角度を変化させるとこの曲線が描画できます。
次に準備です。変数の初期設定、曲線を描くためのペンの準備、開始座標の計算を行いスプライトを開始座標に移動しています。
式はこうなっています。rは半径、θは角度です。半径と角度からX座標とY座標が計算できます。
\[ r=1+2\cos(2\theta) \] 以下のプログラムではこの式に倍率を掛けて曲線全体を拡大しています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。XとYは曲線の座標、倍率と大きさは曲線の大きさ、半径は式を計算して求める値、角度は三角関数に与える角度です。
次に本体です。0度から360度まで角度を変化させるとこの曲線が描画できます。
次に準備です。変数の初期設定、曲線を描くためのペンの準備、開始座標の計算を行いスプライトを開始座標に移動しています。
式はこうなっています。rは半径、θは角度です。半径と角度からX座標とY座標が計算できます。
\[ r=1+2\cos(2\theta) \] 以下のプログラムではこの式に倍率を掛けて曲線全体を拡大しています。
移動はいつも通りです。
完成版はこちら。
Siamese Fishes [見て楽しむ三角関数]
ScratchでSiamese Fishesを描きます。8曲線の第11回です。二匹の魚がキスをしているような曲線です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。今回は式に半径を使う極座標方程式ではなく、X座標Y座標を直接計算する媒介変数方程式なので、半径用の変数はありません。その他はいつもと同じです。
次に本体です。角度を0度から360度まで変化させるとこの曲線が描けます。
次に準備です。変数の初期設定、曲線を描くためのペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。
式はこうなっています。θは角度です。ここからプログラムを作るので式を書いておきますが、式から曲線は想像できません。
\[ x=5\cos(\theta)-(\sqrt{2}-1)\cos(5\theta) \\
y=\sin(4\theta) \] プログラムではこれに倍率を掛けています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。今回は式に半径を使う極座標方程式ではなく、X座標Y座標を直接計算する媒介変数方程式なので、半径用の変数はありません。その他はいつもと同じです。
次に本体です。角度を0度から360度まで変化させるとこの曲線が描けます。
次に準備です。変数の初期設定、曲線を描くためのペンの準備、開始座標の計算を行い、スプライトを開始座標に移動しています。
式はこうなっています。θは角度です。ここからプログラムを作るので式を書いておきますが、式から曲線は想像できません。
\[ x=5\cos(\theta)-(\sqrt{2}-1)\cos(5\theta) \\
y=\sin(4\theta) \] プログラムではこれに倍率を掛けています。
移動はいつも通りです。
完成版はこちら。
ブースのレムニスケート Lemniscate of Booth [見て楽しむ三角関数]
Scratchでブースのレムニスケートを描きます。8曲線の第10回です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aとbは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cos^2(\theta)-b^2\sin^2(\theta) \] 前回のブースの楕円は右辺が足し算でしたが、今回は引き算です。
次に変数です。aとbは式のaとbに対応しています。
次に本体です。二重の繰り返しで複数の曲線を描いています。角度を0度から360度まで変化させると曲線が一本描けます。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。aは240、bは0に設定し、一本の曲線を描くごとに上の本体でbだけ値を増やしていきます。これにより形が少しずつ変化します。
次に準備です。曲線を一本描くために開始点を計算して移動しています。
計算は上で紹介した式をプログラムにしたブロックです。
元の式は左辺がrの二乗なので、r=...の形式にします。
\[ r=\sqrt{a^2cos^2(θ)-b^2sin^2(θ)} \] 式は長いので、画面からはみ出さないように分割しています。計算した半径 r と角度からX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aとbは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cos^2(\theta)-b^2\sin^2(\theta) \] 前回のブースの楕円は右辺が足し算でしたが、今回は引き算です。
次に変数です。aとbは式のaとbに対応しています。
次に本体です。二重の繰り返しで複数の曲線を描いています。角度を0度から360度まで変化させると曲線が一本描けます。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。aは240、bは0に設定し、一本の曲線を描くごとに上の本体でbだけ値を増やしていきます。これにより形が少しずつ変化します。
次に準備です。曲線を一本描くために開始点を計算して移動しています。
計算は上で紹介した式をプログラムにしたブロックです。
元の式は左辺がrの二乗なので、r=...の形式にします。
\[ r=\sqrt{a^2cos^2(θ)-b^2sin^2(θ)} \] 式は長いので、画面からはみ出さないように分割しています。計算した半径 r と角度からX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
ブースの楕円 Oval of Booth [見て楽しむ三角関数]
Scratchでブースの楕円を描きます。8曲線の第9回です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aとbは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cos^2(\theta)+b^2\sin^2(\theta) \]次に変数です。aとbは式に出てくるaとbに対応しています。
次に本体です。二重の繰り返しで複数の曲線を描いています。角度を0度から360度まで変化させると曲線が一本描けます。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。aとbは両方とも180に設定していますが、一本の曲線を描くごとに上の本体でbだけ値を減らしていきます。これにより形が少しずつ変化します。
次に準備です。曲線を一本描くために開始点を計算して移動しています。
計算は上で紹介した式をプログラムにしたブロックです。
元の式は左辺がrの二乗なので、r=...の形式にします。
\[ r=\sqrt{a^2\cos^2(\theta)+b^2\sin^2(\theta)} \] 式は長いので、画面からはみ出さないように分割しています。計算した半径 r と角度からX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に式です。rは半径、aとbは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cos^2(\theta)+b^2\sin^2(\theta) \]次に変数です。aとbは式に出てくるaとbに対応しています。
次に本体です。二重の繰り返しで複数の曲線を描いています。角度を0度から360度まで変化させると曲線が一本描けます。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。aとbは両方とも180に設定していますが、一本の曲線を描くごとに上の本体でbだけ値を減らしていきます。これにより形が少しずつ変化します。
次に準備です。曲線を一本描くために開始点を計算して移動しています。
計算は上で紹介した式をプログラムにしたブロックです。
元の式は左辺がrの二乗なので、r=...の形式にします。
\[ r=\sqrt{a^2\cos^2(\theta)+b^2\sin^2(\theta)} \] 式は長いので、画面からはみ出さないように分割しています。計算した半径 r と角度からX座標とY座標を計算します。
移動はいつも通りです。
完成版はこちら。
カッシーニの卵形線 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を見ると実は二つの空間の中にも曲線が存在するようです。描き方がわかるかたはぜひ教えてください。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。倍角と比率は計算で何回か使う値を先に計算して保持しておくための変数です。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を見ると実は二つの空間の中にも曲線が存在するようです。描き方がわかるかたはぜひ教えてください。
Hippopede [見て楽しむ三角関数]
ScratchでHippopedeを描きます。8曲線の第7回です。hippopedeとは古代ギリシャ語で「馬の足かせ」という意味だそうです。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。aとbは係数で、スライダー表示にして変更できるようにします。
スライダーでaとbの値を変えると曲線が少しずつ変化します。
次に本体です。二重の繰り返しで複数の曲線を描きます。角度を0度から360度まで変化させると曲線が一本描けます。
初期設定はプログラムを実行すると最初に一度だけ呼び出されます。
準備は曲線を一本描く前に呼び出されます。開始点を計算して移動しています。
式はこうなっています。rは半径、aとbはスライダーで指定する固定値、θは角度です。
\[ r^2=4b(a-b\sin^2(\theta)) \] 左辺が二乗になっているので、r=... の形式にします。
\[ r=\sqrt{4b(a-b\sin^2(\theta))} \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。aとbは係数で、スライダー表示にして変更できるようにします。
スライダーでaとbの値を変えると曲線が少しずつ変化します。
次に本体です。二重の繰り返しで複数の曲線を描きます。角度を0度から360度まで変化させると曲線が一本描けます。
初期設定はプログラムを実行すると最初に一度だけ呼び出されます。
準備は曲線を一本描く前に呼び出されます。開始点を計算して移動しています。
式はこうなっています。rは半径、aとbはスライダーで指定する固定値、θは角度です。
\[ r^2=4b(a-b\sin^2(\theta)) \] 左辺が二乗になっているので、r=... の形式にします。
\[ r=\sqrt{4b(a-b\sin^2(\theta))} \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
ダンベル曲線(2) Dumbbell Curve [見て楽しむ三角関数]
Scratchでダンベル曲線を描きます。8曲線の第6回です。結果として前回と同じ曲線になりますが、式はかなり違っていて、今回は平方根を使います。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初にステージです。緑の旗をクリックしたときに起動される処理は今回はステージに記述します。理由はダイポール曲線の時と同じで、正の式と負の式用に二つのスプライトが存在するからです。正の式は曲線の上半分、負の式は曲線の下半分の描画に使います。
次は変数です。大きさと色は二つのスプライトで共用するので、ステージで「すべてのスプライト用」変数として作成します。その他の変数は二つのスプライトで個別に作成します。「大きさ」はスライダーで開始時の値を設定するために使い、実行中にスライダーをいじっても絵の大きさが変わらないように、開始時の「大きさ」を「倍率」に固定して計算に使います。今回は角度の代わりにラジアンを計算に使うのでその値を保持する変数も両方のスプライトに用意します。
次はステージに記述する起動処理です。色を適当に選んで「開始」イベントを送っています。
次に開始処理です。二つある黄色のスプライトは「開始」イベントを受け取ったら処理を始めるように同じプログラムを記述します。角度を-58度から58度まで変化させるとこの曲線が描画できます。滑らかな曲線になるように角度は0.5度ずつ変化させています。
次に準備です。変数を初期化し、原点を計算して移動します。この処理も両方のスプライトに記述します。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度から計算されるラジアンを使います。
\[ x=a\theta \\
y=a\theta^2\sqrt{1-\theta^2} \] θを二乗するので、角度がマイナスの時もY座標は正の値になってしまいます。このため、曲線の下半分を描くにはYの計算結果に-1を掛けて符号を反転する必要があります。
曲線の上半分を描画するプログラムは次のようになります。「上」と名付けたスプライトに記述します。
曲線の下半分の計算はこちらです。「下」スプライトに記述します。
ラジアンの計算は次のようなプログラムになります。
移動はいつも通りです。
ラジアンと移動も上スプライトと下スプライトの両方に記述します。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初にステージです。緑の旗をクリックしたときに起動される処理は今回はステージに記述します。理由はダイポール曲線の時と同じで、正の式と負の式用に二つのスプライトが存在するからです。正の式は曲線の上半分、負の式は曲線の下半分の描画に使います。
次は変数です。大きさと色は二つのスプライトで共用するので、ステージで「すべてのスプライト用」変数として作成します。その他の変数は二つのスプライトで個別に作成します。「大きさ」はスライダーで開始時の値を設定するために使い、実行中にスライダーをいじっても絵の大きさが変わらないように、開始時の「大きさ」を「倍率」に固定して計算に使います。今回は角度の代わりにラジアンを計算に使うのでその値を保持する変数も両方のスプライトに用意します。
次はステージに記述する起動処理です。色を適当に選んで「開始」イベントを送っています。
次に開始処理です。二つある黄色のスプライトは「開始」イベントを受け取ったら処理を始めるように同じプログラムを記述します。角度を-58度から58度まで変化させるとこの曲線が描画できます。滑らかな曲線になるように角度は0.5度ずつ変化させています。
次に準備です。変数を初期化し、原点を計算して移動します。この処理も両方のスプライトに記述します。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度から計算されるラジアンを使います。
\[ x=a\theta \\
y=a\theta^2\sqrt{1-\theta^2} \] θを二乗するので、角度がマイナスの時もY座標は正の値になってしまいます。このため、曲線の下半分を描くにはYの計算結果に-1を掛けて符号を反転する必要があります。
曲線の上半分を描画するプログラムは次のようになります。「上」と名付けたスプライトに記述します。
曲線の下半分の計算はこちらです。「下」スプライトに記述します。
ラジアンの計算は次のようなプログラムになります。
移動はいつも通りです。
ラジアンと移動も上スプライトと下スプライトの両方に記述します。
完成版はこちら。