頭蓋曲線 Cranioid [見て楽しむ三角関数]
Scratchで頭蓋曲線を描きます。cranioは頭蓋を意味する接頭辞です。
有名な絵画の顔みたいですね。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。a, b, c, p, qは式に出てくる係数です。スライダー表示にして値を変更できるようにしています。その他はいつもと同じ用途です。
次に本体です。曲線を30本描くため二重の繰り返しにして、内側の繰り返しで曲線を1本描いています。角度を0度から360度まで変化させながら計算と移動を繰り返すと曲線が1本描けます。1本描き終わったら倍率を小さくし、ペンの色を変化させています。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。ペンを設定して倍率を計算します。
倍率計算は曲線が描画範囲に収まるように最大の倍率を計算します。これまでの曲線では倍率をスライダー表示にしてユーザーが大きさを変えられるようにしていましたが、今回はブログラム内で倍率を計算しています。
次に準備です。曲線を1本描くために開始点を計算して移動しています。
式はこうなっています。rは半径、a, b, c, p, qは係数、θは角度です。係数はスライダーで変更可能です。係数をいじると曲線の形が変わりますので色々試してみてください。
\[ r=a\sin(\theta)+b\sqrt{1-p\cos^2(\theta)}+c\sqrt{1-q\cos^2(\theta)} \] この式をプログラムにすると次のようになります。この式から頭蓋骨のような曲線が描けるとは不思議ですね。
半径の計算式は長いので、一行に書くと画面からはみ出してしまいます。このため複数に分割して式の左側から順番に計算しています。半径と角度からX座標とY座標を計算し、最後に曲線がはみ出さないようにY座標を下にずらしいてます。
移動はいつも通りです。
完成版はこちら。
有名な絵画の顔みたいですね。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。a, b, c, p, qは式に出てくる係数です。スライダー表示にして値を変更できるようにしています。その他はいつもと同じ用途です。
次に本体です。曲線を30本描くため二重の繰り返しにして、内側の繰り返しで曲線を1本描いています。角度を0度から360度まで変化させながら計算と移動を繰り返すと曲線が1本描けます。1本描き終わったら倍率を小さくし、ペンの色を変化させています。
次に初期設定です。プログラムを実行すると最初に一度だけ呼び出されます。ペンを設定して倍率を計算します。
倍率計算は曲線が描画範囲に収まるように最大の倍率を計算します。これまでの曲線では倍率をスライダー表示にしてユーザーが大きさを変えられるようにしていましたが、今回はブログラム内で倍率を計算しています。
次に準備です。曲線を1本描くために開始点を計算して移動しています。
式はこうなっています。rは半径、a, b, c, p, qは係数、θは角度です。係数はスライダーで変更可能です。係数をいじると曲線の形が変わりますので色々試してみてください。
\[ r=a\sin(\theta)+b\sqrt{1-p\cos^2(\theta)}+c\sqrt{1-q\cos^2(\theta)} \] この式をプログラムにすると次のようになります。この式から頭蓋骨のような曲線が描けるとは不思議ですね。
半径の計算式は長いので、一行に書くと画面からはみ出してしまいます。このため複数に分割して式の左側から順番に計算しています。半径と角度からX座標とY座標を計算し、最後に曲線がはみ出さないようにY座標を下にずらしいてます。
移動はいつも通りです。
完成版はこちら。
コメント 0