So-net無料ブログ作成

ケプラーの卵 Kepler's Egg [見て楽しむ三角関数]

Scratchケプラーの卵を描きます。別名Simple Foliumです。foliumはラテン語で葉っぱだそうです。

[ケプラーの卵]

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

今回は単純な一本の曲線ではなく、大きさを変えながら曲線をたくさん描いています。ムール貝のように見えませんか。

まず変数です。今回はスライダー表示の変数「大きさ」はなく、プログラムで大きさを変化させています。

[変数]

次に本体です。これまでの曲線では繰り返しは一重でしたが、今回は曲線を50回描くので二重の繰り返しになっています。

[本体]

角度は0度から180度までで一本の線が完成します。360度まで続けても、同じ軌道上を二回たどるだけです。

次に「初期設定」です。これはプログラムの最初に一度だけ行う処理をまとめています。

[初期設定]

次は「準備」です。これは曲線1本ごとに行う処理をまとめています。

[準備]

この曲線を描くための式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ \begin{aligned}
r&=a\cos^3(\theta) \\
&=a\times\cos(\theta)\times\cos(\theta)\times\cos(\theta)
\end{aligned} \] これは前回のDouble Eggと似ています。Double Eggは\[ r=a\cos^2(\theta) \] つまり二乗で、卵が二つ描かれましたが、3乗にすると卵が一つになってしまいます。不思議ですね。

プログラムにするとこうなります。

[計算]

最後にXを-180しています。この式をそのまま描画すると描画領域の右側だけに曲線が描かれ、左側は空白になります。これでは、曲線が大きくなった場合に描画領域内に収まらず絵が崩れてしまいます。そのため、Xを左に180ずらしています。

移動はいつも同じです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Double Egg [見て楽しむ三角関数]

ScratchDouble Eggを描きます。卵を二つ向かい合わせに並べたような曲線です。

[Double Egg]

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

まず変数です。今回はラジアンもありません。

[変数]

次に本体です。曲線がなめらかになるように0.5度ずつ角度を変えています。0度から360度まで変化させるとこの曲線が描けます。

[本体]

準備はいつも代わり映えしません。変数を初期化して開始点を計算し、そこに移動しています。

[準備]

次に計算です。式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[\begin{aligned}
r&=a\cos^2(\theta) \\
&=a\times\cos(\theta)\times\cos(\theta)
\end{aligned} \] 以前にも書いたように、Scratchの関数の引数にはラジアンではなく角度を使います。関数の外にθはありませんので、今回はラジアンの計算は不要です。

[計算]

移動はいつも通りです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

ガリレオのらせん Galilean Spiral [見て楽しむ三角関数]

Scratchガリレオのらせんを描きます。

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

[ガリレオの螺旋]

ガリレオのらせんを描くための式はこうなっています。
\[ r=a\theta^2-b \]
式に出てくるaとbはそのまま変数にします。aは曲線を画面内に収めるための倍率で、今回は2に固定します。bはスライダー形式で画面上に表示しています。スライダーを動かして再描画すると絵が変化します。θは角度です。

[変数]

本体はいつもと大体同じです。角度は-600度から開始して600度で終了します。この範囲は上の曲線を描けるように選びました。

[本体]

準備も大体これまでと同じです。

[準備]

次に計算です。式の中のθはラジアンですので、角度をラジアンに変換してから計算に使っています。

[計算]

ラジアンと移動はいつも通りです。

[ラジアン]

[移動]

完成版はこちら。bを1から180まで順に変化させてアニメにしたものはこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Neoid [見て楽しむ三角関数]

ScratchNeoidを描きます。

[Neoid]

まず本体です。終了する角度以外はいつもと同じです。

[本体]

次に準備です。開始の角度を-1125にしました。二つの角度は上の曲線を描くためにいろいろ試したした値で、ほかに意味はありません。

[準備]

式はこうなっています。
\[ r=a\theta+b \]
rは計算結果の半径(画面中心からの長さ)、aとbは変化しない定数です。上のような絵を描くために、角度θを-1125度〜675度まで変化させます。

[計算]

次に変数です。今回は定数aとbが式に含まれるのでその変数を作り、スライドにして画面上で変更できるようにします。スライドを動かして再描画すると絵が変化します。

[変数]

ラジアンと移動はいつも通りです。

[ラジアン]

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

双曲らせん Hyperbolic Spiral [見て楽しむ三角関数]

Scratch双曲らせんを描きます。

[双曲らせん]

まず変数です。今回もラジアンを使います。

[変数]

今回の式はこうなっています。
\[ r=\frac{a}{\theta} \]
aは定数なので変化せず、角度θを1からだんだん大きくしていきます。分子は固定で分母が大きくなっていくので、計算結果である半径rの値は角度が大きくなるに従ってだんだん小さくなります。

[計算]

ラジアンはこれまでと同じです。

[ラジアン]

次に本体です。

[本体]

今回は角度を1から始めて、X座標とY座標の絶対値がともに1未満になるまで繰り返します。

準備はいつもあまり変わりません。

[準備]

移動も同じです。

[移動]

完成版はこちら

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

アルキメデスのらせん Archimedean Spiral [見て楽しむ三角関数]

Scratchアルキメデスのらせんを描きます。

[アルキメデスのらせん]

まず変数です。前回のガーフィールド曲線と同様で、ここでもラジアンを使います。

[変数]

次に本体です。今回は特定の角度まで繰り返すのではなく、線が描画領域の端に達するまで繰り返します。

[本体]

次は準備処理です。特別な処理はありません。

[準備]

円を除けば、式はこれまでで一番単純です。
\[ r=a\theta \]
aは曲線が見えるように拡大するための倍率で変化しません。θは角度に応じて変化するので、角度が増えるに従って半径も増えると考えれば良さそうです。実際そういう絵になっていますね。

この式のθはラジアンですのでラジアンを計算するブロックが必要です。

[ラジアン]

計算はこうなります。

[計算]

簡単ですね。移動はいつも通りです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

ガーフィールド曲線 Garfield Curve [見て楽しむ三角関数]

Scratchガーフィールド曲線を描きます。ガーフィールドは漫画のキャラクターです。

[ガーフィールド]

なんとなく似ていますね。

では本体から。半径の計算に使う角度は0〜360度までです。

[本体]

変数は次の通りです。「ラジアン」は角度から計算されるラジアンを記憶しておくための変数です。

[変数]

次に準備です。

[準備]

式はこうなります。
\[ r=\theta\cos(\theta) \]
ここで注意が必要なのは、二種類のθです。Scratchでは、関数の引数(かっこの中の数)に使う数値は「角度」です。一方、曲線を描くときの数式に出てくるθは普通は「ラジアン」です。Scratchでも関数の引数ではないθはラジアンに変換しなければなりません。ラジアンの計算方法はこれです。

[ラジアン]

ブロックを作って計算式を定義しています。Scratchのブロックは一般的なプログラミング言語の関数やサブルーチンとは違い値を返せません。ですので計算結果を変数「ラジアン」に格納して、その後の計算処理で使っています。

次に計算処理です。

[計算]

まずラジアンを計算し、次にラジアンと角度を使って半径を計算しています。その後、X座標とY座標を計算しています。

移動はいつもと同じです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

デューラーの葉形曲線 Dürer Folium [見て楽しむ三角関数]

Scratchデューラーの葉形曲線を描きます。

[デューラーの葉形曲線]

まず変数です。特に説明が必要な変数はありません。もしわからなければ、初回の解説を参照してください。

[変数]

次に本体です。角度は0度〜720度まで変化させると絵が完成します。

[本体]

次に準備です。これもいつもと変わりありません。

[準備]

次に計算です。

[計算]

式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。

\[ r=a\sin\left(\frac{\theta}{2}\right) \]
移動はいつもと同じです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

スピログラフ Spirograph [見て楽しむ三角関数]

Scratchスピログラフを描きます。スピログラフとはこのような定規型のものです。

Spirograph.jpg
By Alexei Kouprianov, CC 表示 2.5, Link

この定規を使うと、次のような絵が描けます。

[スピログラフ]

これをScratch上で再現します。

まず変数です。

[変数]

スピログラフは大きな円の中を小さな円が回転して軌跡を描くので、それぞれの円に対応する「半径大」と「半径小」を使います。「幅」は小さな円の中心から描画点までの距離です。この値を大きくするとドーナツ本体が太くなり、値を小さくするとドーナツが細くなります。

次に本体です。

[本体]

今回は曲線がなめらかになるように角度を0.5ずつ変化させます。また、角度が360度になったら終了するのではなく、永遠に繰り返します。半径の値によって終了する角度が異なるからです。

次に準備です。

[準備]

特に変わった処理はありません。

次に計算です。X, Yともに長いのでどちらも2行に分けました。

[計算]

式はWikipediaにあります。
\[x=(R-r)\cos(\theta)+p\cos\left(\frac{R-r}{r}\theta\right) \\
y=(R-r)\sin(\theta)-p\sin\left(\frac{R-r}{r}\theta\right) \]Rは変数「半径大」、rは変数「半径小」です。また、pは変数「幅」に対応します。θは角度です。

移動はいつもと同じです。

[移動]

完成版はこちら。描画に時間がかかるので、ターボモードがおすすめです。
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

魚曲線 Fish Curve [見て楽しむ三角関数]

Scratchで魚のような曲線を描きます。

[魚曲線]

まず変数です。

[変数]

今回は「半径」は使わず、XとYを直接計算します。

本体はいつもと同じです。

[本体]

次に準備です。

[準備]

代わり映えしません。

次は計算です。

[計算]

式はWolfram MathWorldにあります。参考のために一応式も書いておきますが、覚えたり理解したりする必要はありません。
\[ x=a\cos(\theta) - \frac{a\sin^2(\theta)}{\sqrt2} \\
y=a\cos(\theta)\sin(\theta) \\
0\le\theta\le360 \]
aは大きさ(倍率)、θはいつも通り角度です。この曲線では0から360まで変化します。

移動はいつも通りです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感