SSブログ
見て楽しむ三角関数 ブログトップ
前の10件 | 次の10件

内サイクロイド Hypocycloid [見て楽しむ三角関数]

Scratch内サイクロイドを描きます。前回の外サイクロイドや以前のスピログラフに似ています。

[内サイクロイド]

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

最初に変数です。上のWikipediaのリンクを見るとわかりますが、内サイクロイドは外側に大きな円があり、その内側を小さな円が回転する軌跡になっています。このため、外側の円の「半径大」と回転する円の「半径小」の二つの半径を変数として持っています。この二つの変数はスライダー表示にして画面上で変更できるようにしています。角度は三角関数に与える値です。XとYは曲線の座標に使います。

[変数]

次に本体です。角度を0.5度ずつ変化させながら描画し続けます。終了条件がないのは、開始座標に戻ってくる条件(=終了条件)が半径大と半径小の値によって異なるからです。

[本体]

次に準備です。変数の初期設定、ペンの設定、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。Rは「半径大」、rは「半径小」、θは角度です。
\[ x=(R-r)\cos(\theta)+r\cos\left(\frac{R-r}{r}\theta\right) \\
y=(R-r)\sin(\theta)-r\sin\left(\frac{R-r}{r}\theta\right) \] この式もスピログラフ外サイクロイドによく似ています。見比べてみてください。

上の式をプログラムにすると次のようになります。X座標の計算とY座標の計算はそれぞれ一行に書くこともできますが、画面からはみ出すので分割しています。

[計算]

移動はいつも通りです。

[移動]

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

外サイクロイド Epicycloid [見て楽しむ三角関数]

Scratch外サイクロイドを描きます。

[外サイクロイド]

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

最初に変数です。上のWikipediaのリンクを見るとわかりますが、外サイクロイドは中心に大きな円があり、その外周を小さな円が回転する軌跡になっています。このため、中心の円の「半径大」と回転する円の「半径小」の二つの半径を変数として持っています。この二つの変数はスライダー表示にして画面上で変更できるようにしています。角度は三角関数に与える値です。XとYは曲線の座標に使います。

[変数]

次に本体です。角度を0.5度ずつ変化させながら描画し続けます。終了条件がないのは、開始座標に戻ってくる条件(=終了条件)が半径大と半径小の値によって異なるからです。

[本体]

次に準備です。変数の初期設定、ペンの設定、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。Rは「半径大」、rは「半径小」、θは角度です。
\[ x=(R+r)\cos(\theta)-r\cos\left(\frac{R+r}{r}\theta\right) \\
y=(R+r)\sin(\theta)-r\sin\left(\frac{R+r}{r}\theta\right) \] この式はスピログラフによく似ています。見比べてみてください。

外サイクロイドの式をプログラムにすると次のようになります。X座標の計算とY座標の計算はそれぞれ一行に書くこともできますが、画面からはみ出すので分割しています。

[計算]

移動はいつも通りです。

[移動]

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

円とカージオイド [見て楽しむ三角関数]

Scratch円とカージオイドを描きます。

[円とカージオイド]

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

最初に変数です。今回も極座標方程式ではなく媒介変数方程式なので半径ありません。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。

[本体]

次に準備です。ペンの準備、変数の初期化、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。θは角度です。
\[ x= \frac{\cos^3(\theta)}{2\cos^3(\theta)-2\cos(\theta)+1} \\
y=\frac{\sin(2\theta)\sin^2\left(\frac{\theta}{2}\right)}{2\cos^3(\theta)-2\cos(\theta)+1} \] 複雑すぎて考える気もおきません。機械的にプログラムにすると次のようになります。XとYの計算はそれぞれ一行に書くこともできますが、長すぎて画面からはみ出るので分割しています。\(cos(\theta)\)は繰り返し出てくるので、先に計算しておいて結果を使い回しています。

[計算]

移動はいつも通りです。

[移動]

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

円と8 [見て楽しむ三角関数]

Scratch円と8を描きます。

[円と8]

赤レンジャーみたいですね。

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

最初に変数です。いつもと変わりありません。大きさはスライダー表示にして画面上で変更できるようにしています。こうするとプログラムを修正しなくても曲線の大きさが変えられます。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。

[本体]

次に準備です。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。θは角度です。
\[ x=2\sin(2\theta) \\
y=\cos(\theta)+\cos(3\theta) \] この式をプログラムにすると次のようになります。式では倍率はありませんが、曲線の大きさを調整するために倍率を掛けています。

[計算]

移動はいつも通りです。

[移動]

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

マルタ十字 Maltese Cross [見て楽しむ三角関数]

Scratchマルタ十字を描きます。

[マルタ十字]

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

最初に変数です。Zがありますが、軸が増えて三次元になるわけではなく、XとYを入れ替えるときに一時的に使う変数です。今回の式も媒介変数方程式で、極座標方程式ではないので、半径はありません。

[変数]

次に本体です。今回の式を使っていつものように曲線を描くと、全体の半分しか描かれません。そのため、繰り返しを二つ作り、最初に横方向の曲線、そのあとに縦方向の曲線を描いています。

[本体]

角度を90度から450度まで変化させながら計算、移動を繰り返すと、横方向の曲線が描けます。0度からではなく90度から開始しているのは、画面の中央から描画を始めるためです。縦方向も同様に繰り返すのですが、曲線を縦方向にするため、計算した後にX座標とY座標を入れ替えてから移動しています。

次に初期設定です。プログラムの最初に一度だけ実行したい処理を記述しています。

[初期設定]

次に準備です。一つの曲線を描くための準備処理です。

[準備]

式はこうなっています。aは倍率(大きさ)、θは角度です。
\[ x=a\cos(\theta)\left(\cos^2(\theta)-2\right) \\
y=a\sin(\theta)cos^2(\theta) \] この曲線をプログラムにすると次のようになります。\( cos(\theta) \) は何度も出てくるので先に計算して結果を変数に保存しておき、使い回しています。

[計算]

X座標とY座標の入れ替えは次のようになります。

[座標入れ替え]

移動はいつも通りです。

[移動]

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

Cross Curve [見て楽しむ三角関数]

ScratchCross Curveを描きます。

[Cross Curve]

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

最初に変数です。今回は媒介変数方程式ですので、極座標方程式で使う「半径」はありません。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描けます。滑らかな線にするために角度は0.1度ずつ変化させています。

[本体]

次に準備です。ペンの設定、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。aとbは倍率(大きさ)、θは角度です。今回は半径を計算する極座標方程式ではなくX座標Y座標を直接計算する媒介変数方程式です。
\[ x=\frac{a}{\sin{\theta}} \\
y=\frac{b}{\cos(\theta)} \] この式をプログラムにすると次のようになります。式ではaとbが別々の係数になっていますが、今回のプログラムではどちらも同じ変数「倍率」を使い、曲線の間の幅が同じになるようにしています。

[計算]

移動ではペンの上げ下げも行なっています。

[移動]

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

Right Serpentine [見て楽しむ三角関数]

ScratchRight Serpentineを描きます。serpentineは蛇行といった意味です。

[Right Serpentine]

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

今回の曲線は右上部分と左下部分を別々に描画しますので、スプライトが二つあります。

[スプライトとステージ]

最初に変数です。大きさと色はステージで定義して両方のスプライトから使います。大きさはスライダー表示にして画面上で値を変えられるようにします。

[ステージの変数]

その他の変数はスプライトごとに一つずつ定義します。大きさと色は上で定義したものが表示されているだけです。

[スプライト変数]

次に本体です。緑の旗をクリックすると、ステージに定義した本体が実行されます。ここでは色を適当に選んで、「開始」イベントを送信しています。

[ステージ本体]

二つのスプライトは、「開始」イベントを受け取るとそれぞれに描画処理を始めます。この処理は両方のスプライトで同じ内容を記述します。描画領域の端から中心に向かって曲線を描画し、座標が画面の中心に達したら終了します。

[スプライト本体]

次に準備です。右上用のスプライトと左下用のスプライトには座標(X, Y)や角度のような固有の変数があるので、それぞれのスプライトで別々の初期化処理を行います。最初に右上用スプライトの準備処理です。

[準備1]

次に左下用スプライトの準備処理です。

[準備2]

内容はほとんど同じで、角度だけが違います。いつもよりかなり長い処理になっています。描画領域の外側の座標で描画しようとすると描画領域の周縁部に余分な線が出てしまうので、座標が領域の内側に入ったところから描画を開始するように、角度を調整しています。繰り返しの部分がその処理になります。

式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cot(\theta) \] この式をプログラムにすると次のようになります。このブロックは両方のスプライトで同じ内容を記述します。

[計算]

cotは三角関数でtanの逆数ですので、次のように定義します。このブロックも両方のスプライトで同じ内容を記述します。

[cotangent]

Scratchのブロックは一般的なプログラム言語の関数とは違い値を返せないので、cot変数に値を格納しておき、計算でその値を使っています。

移動はいつも通りです。このブロックも両方のスプライトで同じ内容を記述します。

[移動]

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

風車2 Windmill [見て楽しむ三角関数]

Scratch風車を描きます。前回も風車を描きましたが、今回は別の式で、曲線の形も少し違います。

[風車]

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

最初に変数です。cotは計算の途中結果を保持するためのものです。その他はいつもと同じです。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。綺麗な曲線にするために角度は0.1度ずつ変化させます。描画に時間がかかるのでターボモードがお勧めです。

[本体]

次に準備です。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。

[準備]

式はこうなっています。rは半径、θは角度、二本の縦棒は絶対値の記号です。
\[ r^2=\lvert\cot(2\theta)\rvert \] cotは「cotangent」の省略形で、日本語では「余接」と呼ばれます。これも三角関数です。定義は次のようになります。
\[ \cot(\theta)=\frac{1}{\tan(\theta)} \] プログラムでは次のようにブロック(関数)を定義し、計算結果をcotという変数に格納して、後の計算で使えるようにしています。

[cotangent]

上の式をプログラムにすると次のようになります。式には倍率は書いていませんが、曲線の大きさを調整するために大きさを掛けています。最初に式から半径を計算し、半径と角度からX座標Y座標を計算します。

[計算]

移動は今回もペンの上げ下げを行なっています。

[移動]

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

風車1 Windmill [見て楽しむ三角関数]

Scratch風車を描きます。

[風車]

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

最初に変数です。いつもと変わりありません。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。綺麗な曲線にするために角度は0.1度ずつ変化させています。このため描画に時間がかかるので、ターボモードがお勧めです。

[本体]

次に準備です。ペンの準備、変数の初期設定、開始座標の計算を行い、開始座標に移動しています。

[準備]

式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\tan(2\theta) \] この式をプログラムにすると次のようになります。まず、上の式に従って半径を計算し、半径と角度からX座標Y座標を計算しています。

[計算]

移動ではペンの上げ下げも行なっています。中心からの距離、つまり半径が190超えたらペンを上げ、そうでなければペンを下ろしています。

[移動]

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

左まんじ Svastika [見て楽しむ三角関数]

Scratch左まんじを描きます。

[左まんじ]

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

最初に変数です。X, Yは曲線の座標、半径は式の計算結果、倍率は曲線の大きさ、角度は計算で使います。

[変数]

次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描けます。綺麗な曲線にするために0.1度ずつ角度を変化させています。このため描画に時間がかかりますので、ターポモードがおすすめです。

[本体]

次に準備です。本体で最初に呼び出されます。ペンの設定、変数の初期設定、開始座標の計算を行い、開始座標に移動します。

[準備]

式はこうなっています。rは半径、θは角度です。
\[ r^2=\tan(2\theta) \] この式をプログラムにすると次のようになります。上の式には倍率は出てきませんが、曲線の大きさを調整するために使っています。

[計算]

移動はいつもと少し違います。半径が200以上の場合はペンを上げています。これにより綺麗な曲線になります。ペンを下ろしたままだと余計な線が出てしまいます。興味がある方はプログラムを修正して試してみてください。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感
前の10件 | 次の10件 見て楽しむ三角関数 ブログトップ

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