曲線のまとめ [見て楽しむ三角関数]
これまでに紹介した曲線を一覧にしました。厳密ではないですが、単純な式から順に並べています。
名称、式、Scratch列のセルはリンクになっています。
ブラウザによっては画像が全部表示されないかもしれません。そのような場合は、その画像だけ再読み込みしてください。
極座標方程式
媒介変数方程式
名称、式、Scratch列のセルはリンクになっています。
ブラウザによっては画像が全部表示されないかもしれません。そのような場合は、その画像だけ再読み込みしてください。
極座標方程式
媒介変数方程式
クロソイド [見て楽しむ三角関数]
Scratchでクロソイドを描きます。Wolfram Mathworldやmathcurve.comで公開されている式をもとにした曲線はこれで一旦終了です。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
今回は、WikipediaにあるJavaScriptのソースコードを参考にプログラムを作りました。積分を使うのでいつもとは少し処理が違います。
最初に本体です。この曲線は右上部分と左下部分に分けて原点(0,0)から二回描画しますので、繰り返しが二回あります。
次に変数です。
次に準備です。右上の描画前と左下の描画前に一度ずつ呼び出されます。
式はこうなっています。tは角度です。
\[ x=\int_0^L \cos\left(t^2\right)dt \\y=\int_0^L \sin\left(t^2\right)dt \] この式をプログラムにすると次のようになります。式のインテグラル(積分)の繰り返し部分は本体に存在します。
ラジアンから角度を求めるブロックは次の通りです。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
今回は、WikipediaにあるJavaScriptのソースコードを参考にプログラムを作りました。積分を使うのでいつもとは少し処理が違います。
最初に本体です。この曲線は右上部分と左下部分に分けて原点(0,0)から二回描画しますので、繰り返しが二回あります。
次に変数です。
次に準備です。右上の描画前と左下の描画前に一度ずつ呼び出されます。
式はこうなっています。tは角度です。
\[ x=\int_0^L \cos\left(t^2\right)dt \\y=\int_0^L \sin\left(t^2\right)dt \] この式をプログラムにすると次のようになります。式のインテグラル(積分)の繰り返し部分は本体に存在します。
ラジアンから角度を求めるブロックは次の通りです。
移動はいつも通りです。
完成版はこちら。
Tschirnhausen Cubic [見て楽しむ三角関数]
ScratchでTschirnhausen Cubicを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。secは関数の計算結果を保存しておくための変数です。そのほかはいつも通りです。
次に本体です。角度を-191度から191度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの設定、変数の初期化、開始座標の計算、開始座標への移動を行なっています。
この曲線を描画するための式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a \sec^3\left(\frac{1}{3}\theta\right) \] この式をプログラムにすると次のようになります。
secは正割関数です。定義はこうなっています。
\[sec(\theta)=\frac{1}{cos(\theta)} \] この式をプログラムにすると次のようになります。
このブロックの計算結果は変数「sec」に格納しておき、計算の中で使っています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。secは関数の計算結果を保存しておくための変数です。そのほかはいつも通りです。
次に本体です。角度を-191度から191度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの設定、変数の初期化、開始座標の計算、開始座標への移動を行なっています。
この曲線を描画するための式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a \sec^3\left(\frac{1}{3}\theta\right) \] この式をプログラムにすると次のようになります。
secは正割関数です。定義はこうなっています。
\[sec(\theta)=\frac{1}{cos(\theta)} \] この式をプログラムにすると次のようになります。
このブロックの計算結果は変数「sec」に格納しておき、計算の中で使っています。
移動はいつも通りです。
完成版はこちら。
歯車 Gear Curve [見て楽しむ三角関数]
Scratchで歯車を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。今回は倍率は固定で、歯車の歯の数を可変にしています。tanhは関数の計算結果を保持しておくための変数です。また、bは式の中で出てくる定数で、準備処理の中で10に固定しています。
次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの設定、変数の初期化、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a+\frac{1}{b}\tanh(b\sin(n\theta)) \] tanhは双曲正接関数です。bを大きくすると歯の高さが小さくなります。今回は10に固定していますが、スライダ表示にして変化させてみるのも面白いですよ。
この式をプログラムにすると次のようになります。上の式の「a」は1に固定、いつも曲線の大きさの調整に使っている「倍率」変数は上の「準備」処理で160に固定しています。
tanhはWikipediaで次のように定義されています。eはネイピア数です。
\[ \tanh(\theta)=\frac{1-e^{-2\theta}}{1+e^{-2\theta}} \] これはScratchでは提供されていないので、自分でブロックを作って定義します。
計算結果はtanh変数に保存しておき、計算で使っています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。今回は倍率は固定で、歯車の歯の数を可変にしています。tanhは関数の計算結果を保持しておくための変数です。また、bは式の中で出てくる定数で、準備処理の中で10に固定しています。
次に本体です。角度を0度から360度まで変化させながら計算、移動を繰り返すとこの曲線が描画できます。
次に準備です。ペンの設定、変数の初期化、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a+\frac{1}{b}\tanh(b\sin(n\theta)) \] tanhは双曲正接関数です。bを大きくすると歯の高さが小さくなります。今回は10に固定していますが、スライダ表示にして変化させてみるのも面白いですよ。
この式をプログラムにすると次のようになります。上の式の「a」は1に固定、いつも曲線の大きさの調整に使っている「倍率」変数は上の「準備」処理で160に固定しています。
tanhはWikipediaで次のように定義されています。eはネイピア数です。
\[ \tanh(\theta)=\frac{1-e^{-2\theta}}{1+e^{-2\theta}} \] これはScratchでは提供されていないので、自分でブロックを作って定義します。
計算結果はtanh変数に保存しておき、計算で使っています。
移動はいつも通りです。
完成版はこちら。
ポアンソーのらせん Poinsot's spiral (csch) [見て楽しむ三角関数]
Scratchでポアンソーのらせん (csch版)を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cschとラジアンは関数の計算結果をあとで使うために保持しておく変数です。
次に本体です。最初に角度を60度から810度まで変化させながら計算、描画を繰り返します。次に角度の符号を反転させて-810度から-60度まで計算、描画を繰り返します。
-60度から60度の間を描画しないのは、曲線が画面の外側にはみ出したり符号が反転する時に余計な線が描画されたりするからです。
次に準備です。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。nも曲線の大きさに影響します。
\[ \newcommand{\csch}{\mathop{\rm csch}\nolimits} r=a\csch\left(n\theta\right) \] この式をプログラムにすると次のようになります。今回は \(n=\frac{1}{3}\) としています。最初にcsch関数の値を計算し、その結果から半径を計算、さらに半径と角度からX座標とY座標を計算しています。最後にY座標を下に移動して曲線全体が画面内に収まるように調整しています。
cschは双曲余割関数です。Scratchでは提供されていないので、Wolfram Mathworldの定義を使って自分でブロックを定義します。
\[ \csch(\theta)=\frac{2}{e^{\theta}-e^{-\theta}} \] \(e\) はネイピア数です。この式をプログラムにすると次のようになります。
計算結果はcsch変数に入れておき、計算の中で使います。
ラジアンもブロックを定義します。Scratchでは事前に定義されている三角関数には角度の値をそのまま使いますが、自分で定義する関数はラジアンを使う必要があります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cschとラジアンは関数の計算結果をあとで使うために保持しておく変数です。
次に本体です。最初に角度を60度から810度まで変化させながら計算、描画を繰り返します。次に角度の符号を反転させて-810度から-60度まで計算、描画を繰り返します。
-60度から60度の間を描画しないのは、曲線が画面の外側にはみ出したり符号が反転する時に余計な線が描画されたりするからです。
次に準備です。ペンの準備、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。nも曲線の大きさに影響します。
\[ \newcommand{\csch}{\mathop{\rm csch}\nolimits} r=a\csch\left(n\theta\right) \] この式をプログラムにすると次のようになります。今回は \(n=\frac{1}{3}\) としています。最初にcsch関数の値を計算し、その結果から半径を計算、さらに半径と角度からX座標とY座標を計算しています。最後にY座標を下に移動して曲線全体が画面内に収まるように調整しています。
cschは双曲余割関数です。Scratchでは提供されていないので、Wolfram Mathworldの定義を使って自分でブロックを定義します。
\[ \csch(\theta)=\frac{2}{e^{\theta}-e^{-\theta}} \] \(e\) はネイピア数です。この式をプログラムにすると次のようになります。
計算結果はcsch変数に入れておき、計算の中で使います。
ラジアンもブロックを定義します。Scratchでは事前に定義されている三角関数には角度の値をそのまま使いますが、自分で定義する関数はラジアンを使う必要があります。
移動はいつも通りです。
完成版はこちら。
ポアンソーのらせん Poinsot's spiral (sech) [見て楽しむ三角関数]
Scratchでポアンソーのらせん(sech版)を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。sechは同名の関数の計算結果を保存しておくための変数です。大きさはスライダー表示にして画面上で値を変更できるようにしています。
次に本体です。角度を-1080度から1080度まで変化させながら計算、描画を繰り返すと、この曲線が描画できます。
次に準備です。ペンの設定、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。nも曲線の大きさに影響します。
\[ \newcommand{\sech}{\mathop{\rm sech}\nolimits} r=a\sech\left(n\theta\right) \] 今回は \(n=\frac{1}{3}\) としています。この式をプログラムにすると次のようになります。まずsechを計算し、その結果から半径を計算、さらに半径と角度からX座標とY座標を計算しています。
sechは双曲正割関数です。Scratchにはこの関数は用意されていませんので、Wolfram Mathworldの定義を使って、自分でブロックを定義します。
\[ \sech(\theta)=\frac{2}{e^{\theta}+e^{-\theta}} \] \(e\) はネイピア数です。この式をプログラムにすると次のようになります。
Scratchでは内蔵されている三角関数には角度を指定しますが、自分で定義する関数の角度にはラジアンを使いますので、ラジアンのブロックも定義しています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。sechは同名の関数の計算結果を保存しておくための変数です。大きさはスライダー表示にして画面上で値を変更できるようにしています。
次に本体です。角度を-1080度から1080度まで変化させながら計算、描画を繰り返すと、この曲線が描画できます。
次に準備です。ペンの設定、変数の初期設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。nも曲線の大きさに影響します。
\[ \newcommand{\sech}{\mathop{\rm sech}\nolimits} r=a\sech\left(n\theta\right) \] 今回は \(n=\frac{1}{3}\) としています。この式をプログラムにすると次のようになります。まずsechを計算し、その結果から半径を計算、さらに半径と角度からX座標とY座標を計算しています。
sechは双曲正割関数です。Scratchにはこの関数は用意されていませんので、Wolfram Mathworldの定義を使って、自分でブロックを定義します。
\[ \sech(\theta)=\frac{2}{e^{\theta}+e^{-\theta}} \] \(e\) はネイピア数です。この式をプログラムにすると次のようになります。
Scratchでは内蔵されている三角関数には角度を指定しますが、自分で定義する関数の角度にはラジアンを使いますので、ラジアンのブロックも定義しています。
移動はいつも通りです。
完成版はこちら。
双曲正接らせん Hyperbolic Tangent Spiral [見て楽しむ三角関数]
Scratchで双曲正接らせんを描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。tanhは三角関数の計算結果を保持するための変数です。「大きさ」と「k」はスライダー表示にして画面上で変更できるようにしています。
次に本体です。角度を-450度から450度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。
次に準備です。ペンの設定、変数の設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\tanh(k\theta) \] この式をプログラムにすると次のようになります。
最初に\(\tanh(\theta)\)から半径を計算し、その結果からX座標とY座標を計算しています。\(\tanh\)は双曲正接関数で、今回はこのサイトにある定義を使っています。
\[ \tanh(\theta)=\frac{e^{\theta}-e^{-\theta}}{e^{\theta}+e^{-\theta}} \] \(e\) はネイピア数です。Scratchにはこの関数は備わっていないので、自分でブロックを定義します。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。tanhは三角関数の計算結果を保持するための変数です。「大きさ」と「k」はスライダー表示にして画面上で変更できるようにしています。
次に本体です。角度を-450度から450度まで変化させながら計算、移動を繰り返すとこの曲線を描画できます。
次に準備です。ペンの設定、変数の設定、開始座標の計算、開始座標への移動を行なっています。
式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r=a\tanh(k\theta) \] この式をプログラムにすると次のようになります。
最初に\(\tanh(\theta)\)から半径を計算し、その結果からX座標とY座標を計算しています。\(\tanh\)は双曲正接関数で、今回はこのサイトにある定義を使っています。
\[ \tanh(\theta)=\frac{e^{\theta}-e^{-\theta}}{e^{\theta}+e^{-\theta}} \] \(e\) はネイピア数です。Scratchにはこの関数は備わっていないので、自分でブロックを定義します。
移動はいつも通りです。
完成版はこちら。
内トロコイド Hypotrocoid [見て楽しむ三角関数]
Scratchで内トロコイドを描きます。式は前回の外トロコイドや前々回の内サイクロイド、その前の外サイクロイド、以前のスピログラフに似ています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。上のWikipediaのリンクを見るとわかりますが、内トロコイドは中心の定円の内側を動円が回転する軌跡になっています。このため、外側の円の「定円半径」と回転する円の「動円半径」、さらに動く円の中心から描画点までの「描画点半径」を変数として持っています。これら三種類の半径はスライダー表示にして画面上で値を変更できるようにしています。値を変えると曲線の形が変わります。
次に本体です。角度を0.5度ずつ変化させながら描画を続けます。繰り返しの終了条件がない理由は外トロコイドと同じで、スライダーで指定する各半径の値によって終了条件が変わるからです。描画を止めるには、旗の右にある赤いボタンを押してください。描画には時間がかかるのでターボモードがお勧めです。
次に準備です。ペンの準備、変数の準備、開始点の計算、開始点への移動を行なっています。
式はこうなっています。Rは「定円半径」、rは「動円半径」、dは「描画点半径」、θは角度です。
\[ x=(R-r)\cos(\theta)+d\cos\left(\frac{R-r}{r}\theta\right) \\
y=(R-r)\sin(\theta)-d\sin\left(\frac{R-r}{r}\theta\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。上のWikipediaのリンクを見るとわかりますが、内トロコイドは中心の定円の内側を動円が回転する軌跡になっています。このため、外側の円の「定円半径」と回転する円の「動円半径」、さらに動く円の中心から描画点までの「描画点半径」を変数として持っています。これら三種類の半径はスライダー表示にして画面上で値を変更できるようにしています。値を変えると曲線の形が変わります。
次に本体です。角度を0.5度ずつ変化させながら描画を続けます。繰り返しの終了条件がない理由は外トロコイドと同じで、スライダーで指定する各半径の値によって終了条件が変わるからです。描画を止めるには、旗の右にある赤いボタンを押してください。描画には時間がかかるのでターボモードがお勧めです。
次に準備です。ペンの準備、変数の準備、開始点の計算、開始点への移動を行なっています。
式はこうなっています。Rは「定円半径」、rは「動円半径」、dは「描画点半径」、θは角度です。
\[ x=(R-r)\cos(\theta)+d\cos\left(\frac{R-r}{r}\theta\right) \\
y=(R-r)\sin(\theta)-d\sin\left(\frac{R-r}{r}\theta\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
外トロコイド Epitrochoid [見て楽しむ三角関数]
Scratchで外トロコイドを描きます。式は前回の内サイクロイドや前々回の外サイクロイド、以前のスピログラフに似ています。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。上のWikipediaのリンクを見るとわかりますが、外トロコイドは中心の定円のまわりを動円が回転する軌跡になっています。このため、内側の円の「定円半径」と回転する円の「動円半径」、さらに動く円の中心から描画点までの「描画点半径」を変数として持っています。これら三種類の半径はスライダー表示にして画面上で値を変更できるようにしています。値を変えると曲線の形が変わります。
次に本体です。角度を0.5度ずつ変化させながら描画を続けます。繰り返しの終了条件がないのは、スライダーで指定する各半径の値によって終了条件が変わるからです。描画を止めるには、旗の右にある赤いボタンを押してください。描画には時間がかかるのでターボモードがお勧めです。
次に準備です。ペンの準備、変数の準備、開始点の計算、開始点への移動を行なっています。
式はこうなっています。Rは「定円半径」、rは「動円半径」、dは「描画点半径」、θは角度です。
\[ x=(R+r)\cos(\theta)-d\cos\left(\frac{R+r}{r}\theta\right) \\
y=(R+r)\sin(\theta)-d\sin\left(\frac{R+r}{r}\theta\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。上のWikipediaのリンクを見るとわかりますが、外トロコイドは中心の定円のまわりを動円が回転する軌跡になっています。このため、内側の円の「定円半径」と回転する円の「動円半径」、さらに動く円の中心から描画点までの「描画点半径」を変数として持っています。これら三種類の半径はスライダー表示にして画面上で値を変更できるようにしています。値を変えると曲線の形が変わります。
次に本体です。角度を0.5度ずつ変化させながら描画を続けます。繰り返しの終了条件がないのは、スライダーで指定する各半径の値によって終了条件が変わるからです。描画を止めるには、旗の右にある赤いボタンを押してください。描画には時間がかかるのでターボモードがお勧めです。
次に準備です。ペンの準備、変数の準備、開始点の計算、開始点への移動を行なっています。
式はこうなっています。Rは「定円半径」、rは「動円半径」、dは「描画点半径」、θは角度です。
\[ x=(R+r)\cos(\theta)-d\cos\left(\frac{R+r}{r}\theta\right) \\
y=(R+r)\sin(\theta)-d\sin\left(\frac{R+r}{r}\theta\right) \] この式をプログラムにすると次のようになります。
移動はいつも通りです。
完成版はこちら。