このページにあるアニメーションのリスト(ハイパーテキストをクリックするとアニメーションがみられます。)
ここにもどるにはブラウザーの"Back" ボタンを使う。
詳細については, それぞれ 楕円 (Ellipse) , 放物線 (Parabola) , 双曲線 (Hyperbola) の項を参照されたい。
詳細については, サイクロイド (Cycloid) を参照されたい。
詳細については, エピサイクロイド(Epicycloid )を参照されたい。
詳細については,
ハイポサイクロイド(Hypocycloid) を参照されたい。
************* ellipse_manual_2.dwg *************
**************** ellipse_auto.dwg ****************
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから ellipse_auto と実行命令をタイプする。
ellipse_manual_2.dwg の図面を描くには, コマンド ラインから ellipse_manual_2 と 入力する。
XY座標軸の原点 O を中心として半径 a の円を描く。 X軸上に点O から 距離c の点F1を選ぶ。 円上の点P からF1を通りもう一つの円上の点Qまで線を引く。 点PからPQに直角に直線PS を引く。 S は 円上の点である。 円上の4点を結び 長方形PQRS を作る。この時SR と X軸の交点をF2とする。 F1P を延長して F1P = PT となるように 点T を定める。 TF2 は PS と 点Uで交わる。 PQ は SR に平行であるから Δ OPF1 ≡ Δ ORF2 また Δ UPF1 ≡ Δ UPT であるから, F1U = UT そして ∠F1UP = ∠TUP = ∠SUF2 従って F2 = (c 0), そして UF1 + UF2 = UF2 + UT = PR = 2a (定数) つまり点U はF1, F2を焦点とする楕円上の点であるだけでなく ∠F1UP = ∠SUF2であるから この点で 楕円は線分PS と接している。 この様にして作られた線分(PS,QR)の集まりは 上の図のように 包絡線として 楕円を形成することがわかる。この図面の作成方法 :
上の図でP,Q,S は円周上の点であることから ∠SPQ は 直角である。
このことを利用すると 製図用三角定規を使って 包絡線を引くことが出来る。
直角の頂点を円周上に置き、直角を挟む一辺が焦点F1を通るようにする。
そのとき 直角を挟むもう一方の辺を使って線を引くとこれが 線分PS に相当する。
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから ellipse_by_triangle と実行命令をタイプする。
************ ellipse_by_triangle.dwg ************
点Tは焦点F2を中心にして半径が 2a の円周上にある。
PS を延長してこの外側の円との交点を V,W とすると VWは
F1T の垂直二等分線になっていることがわかる。
これを折り紙の言葉で表すと次のように言える。
この大きな円を円形の紙だと考える。円上の点 T を 焦点F1に
重なるように折るとその折り目がVWとなる。
つまり F2を中心として半径2a の円周上の点を F1に重なるように折ると
その折り目 VW の作る包絡線としてF1,F2を焦点とする楕円が得られる。
この図面の作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから ellipse_model と実行命令をタイプする。
"Want to continue ?" と訊いてくるから "Yes" と答える。
************** ellipse_model_2.dwg **************
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから ellipse_by_folding と実行命令をタイプする。
************* ellipse_by_folding.dwg *************
************* parabola_manual_2.dwg *************
**************** parabola_line.dwg ****************
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから parabola_auto と実行命令をタイプする。
ellipse_manual_2.dwg の図面をつくるには, コマンド ラインから ellipse_manual_2 と実行命令をタイプする。
F は焦点 (c, 0), で Y 軸に平行で 原点から c の距離にある 直線 D1 D2は Directrix である。 Y 軸上の任意の点を B とする。FB は この directrix と C で交わる。 点B で FC に垂直にABを引く。 点C からX-軸に平行線を引くと AB と点Gで交わる。 すると GC = GF となる。 これは 放物線の定義である。 更に ∠CGB = ∠BGF = ∠AGE であるから ∠EGF の二等分線はABに垂直である。 従って 点Gは放物線上の点であるだけでなく AB はこの点で放物線に接している。 故に AB のような線分の包絡線は放物線を形成する。
放物線の定義 GC = GF から 放物線の方程式を導く。 GC2 = GF2 であるから GC = (x + c) ,GF = {(x-c)2 + y2}1/2 を代入して 項をまとめると y2 = 4cx が得られる。
上の説明図で 点A,B,Fを結ぶと ∠ABF は直角であるからこの三角形を
製図用三角定規で置き換えて考えることが出来る。
すなわち 直角を挟む一辺が 焦点を通るようにしながら
直角の頂点は Y-軸上を動くようにすると 直角を挟む
もう一つの辺が包絡線の一部となる。
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから parabola_by_triangle と実行命令をタイプする。
************ parabola_by_triangle.dwg ************
左の図で点G はCFの垂直二等分線AK 上にある。
この図全体が一枚の紙であると考えると
AK は線分D1 D2上の点C が焦点F
に重なるように紙を折った時にできる折り目線であると考えられる。
注記: directrix D1 D2 はその中心が X-軸上の無限遠に位置する 円弧であると 考えられる。
この図面の作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから parabola_model と実行命令をタイプする。
実行が終了してから 線分 BK を追加する。
************** parabola_model_2.dwg **************
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから parabola_by_folding と実行命令をタイプする。
************* parabola_by_folding.dwg *************
*********** hyperbola_manual_2.dwg ***********
************** hyperbola_auto.dwg **************
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから hyperbola_auto と実行命令をタイプする。
hyperbola_manual_2.dwg の図面をつくるには, コマンド ラインから hyperbola_manual_2 と実行命令をタイプする。
座標軸の原点を中心にして半径 a の円を描く。 X-軸上でこの円の外側こ、中心から c の距離に二つの点 F1,F2 を定める。(c > a) 円上の一点P をF1と直線で結び、円との交点をQとする。 二点P,Q で 線分PQに垂線を立てると その延長は 円と それぞれS,R で交わり PQRS は長方形になる。 また 対称性により RS は X-軸と点F2で交わる。 F1P をP の方向に延長して F1P = PT となるように 点T を決める。 TをF2と結ぶと、延長線が PS と 点 U で交わる。 Δ UPF1 ≡ Δ UPT であるから F1U = UT , UF1 - UF2 = UT - UF2 = F2T = PR = 2a (定数). 従って 点 U は F1,F2 を焦点とする 双曲線上にある。 更に ∠ PUF1 = ∠ PUT =∠ BUV であるから 線分 BP は 点 U でこの双曲線に接していることがわかる。
四点 P,Q,R, S が中心の円周上にあり ∠SPQ は直角である。
この性質を利用すると、製図用三角定規を使って双曲線を
線分の包絡線としてつくることができる。
直角を挟む一辺が常にF1を通るように拘束しながら
直角の頂点を円周上で動かしたとき
直角を挟む他の辺が作る包絡線が 双曲線である。
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから hyperbola_by_triangle と実行命令をタイプする。
************ hyperbola_by_triangle.dwg ************
焦点F2 を中心として半径 2a の円周上にある点Tと
もう一つの焦点F1は
包絡線を作る線分PBに関して
線対称の位置にある。
従って この図全体が一枚の紙であると考えたとき
T をつかんでF1に重なるように紙を折ると
折り目線として PBが残る。
それを円周上の幾つかの点に対して行うと
折り目の包絡線として 双曲線が得られる。
この図面とアニメーションの作成方法 :
プログラム conics_by_line.lsp をロードする。 (load "conics_by_line")
コマンド ラインから hyperbola_by_folding と実行命令をタイプする。
********** hyperbola_by_folding.dwg **********
(1) 円の直径 (2a)の 高さに
長さが2aπ の線分を引く。
(2) これを n等分(ここでは n = 20)する。
(3) まず左端で X 軸に垂直な
線分を立てる。
(4) 右に一点進む度にこの垂直線分を
時計回転方向に
(2π/n) ラジアン 回転させる。
******************* cycloid_by_line_envelope.dwg ************************
(1) 直径 4a の円の直径が 点OでX 軸に
垂直になるように置く。
(2) この円を回転させて右に動かす時に、
直径の線分も一緒に動かすと
図のような包絡線が出来て、
これが サイクロイドになっている。
******************* cycloid_by_line_envelope_2.dwg *********************
この図面とアニメーションの作成方法 :
プログラム cycloid1.lsp をロードする。 (load "cycloid1")
コマンド ラインから draw_cycloid_by_line と実行命令をタイプする。
一番目の例: 分割の数 = 20
二番目の例: 分割の数 = 200, 名前 が layer2の画層 (黄色の点) は非表示に設定してある。
半径 "a" の円周上の一点P が最初はX-軸上の原点にあるとする。 この円が線分OX上を摩擦なしに角度 θ(ラジアン)回転して右に進んだとする。 その時点での円の頂点、中心、X-軸と接する点を それぞれQ,R,U とする。 ∠RPQ は直角で、点Rがこの時点での回転中心になっており、線分PQ(及び PT) は点Pの軌跡が作る曲線に接している。 更に ∠PUR = θ, ∠PRO = ∠PQR = ∠SQT = θ/2 であるから OR = a θ. 従って 点P(x,y) は θ をパラメターとして次の様に表せる。 x = a(θ - sin θ) y = 2a(1 - cosθ) "PT" のような線分は 上に示すようにサイクロイドの包絡線になる。 サイクロイドの包絡線の作り方: (1) X-軸に平行で 長さが2πa の線分AB を引き、それを n 等分する。 点AでABに垂直な長さが2aの線を引く 右側の次の点に行く度に角度を2π/n だけ時計回り方向に増加させながら 線を引いていく。 (2) 半径 が 2a の円 を描き、その直径が 原点で垂直になるようにする。 この大きな円をX軸上に転がすと その直径の作る包絡線が サイクロイドになる。 その理由は 大きな円が 点 R にきたとき, ∠RQP' = θ であり PT がその直径の一部になっている。
この図面の作成方法 :
プログラム cycloid1.lsp をロードする。 (load "cycloid1")
コマンド ラインから draw_cycloid_model と実行命令をタイプする。
分割数を 20 に選び、7番目で 実行を中止した後、手作業で図面に修正を加える。
**** epicycloid_cardioid.dwg
**** **** epicycloid_nephroid.dwg
**** **** epicycloid_cremona.dwg****
** ハート形のアニメーションを見る ** ネフロイドのアニメーションを見る ** クレモナのアニメーションを見る
この図面とアニメーションの作成方法 :
プログラム draw_epicycloid.lsp をロードする。 (load "draw_epicycloid")
コマンド ラインから draw_epicycloid_auto と実行命令をタイプする。
入力の既定値は a = 1, b = 1, 一周の分割数 = 72 に設定してあるから
ハート形の場合: 総て 既定値を使うので "Enter" キーを押すだけ。
ネフロイド(Nephroid)の場合: a = 2 であとは 既定値を使うので "Enter" キーを押すだけ。
クレモナ(Cremona)の場合: a = 3 であとは 既定値を使うので "Enter" キーを押すだけ。
原点 Oを中心として半径a の円の周りを半径b の円 (中心Pの始点をPOとする)が動くときの 動円上の点の軌跡は次のようになる。 動円の中心がPにきた時 OP がX軸となす角をθ とすると そこに来るまでに 動いた弧の距離は (a + b)θ であるから 動円が回転した角度を α とすると b α = (a + b)θ である。 従って α = {(a + b)/b} θ その結果 エピサイクロイド 上の点Q(x,y) は次のような式で書き表される。 x = (a + b)cosθ + b cos α y = (a + b)sinθ + b sin α ここで α = {(a + b)/b} θ 例(1):ハート形 (a = b) x = a{2cosθ + cos2θ} y = a{2sinθ + sin2θ} 例(2):ネフロイド (a = 2b) x = b{3cosθ + cos3θ} y = b{3sinθ + sin3θ}
この図面の作成方法 :
プログラム draw_epicycloid.lsp をロードする。 (load "draw_epicycloid")
コマンド ラインから epicycloid_model と実行命令をタイプする。
(入力データ) 内側の円の半径= 2, 外側の円の半径= 1, に設定して、 一周を 72 分割にする。
実行終了後、 図面に修正を加える。
**** string_cardioid.dwg****
**** string_nephroid.dwg****
**** string_cremona.dwg****
** ハート形のアニメーションを見る ** ネフロイドのアニメーションを見る ** クレモナのアニメーションを見る
この図面とアニメーションの作成方法 :
プログラム string_epicycloid.lsp をロードする。 (load "string_epicycloid")
コマンド ラインから string_epicycloid と実行命令をタイプする。
入力の既定値は カスプの数 = 1, 一周の分割数 = 72 に設定してあるから
ハート形の場合: 総て 既定値を使うので "Enter" キーを押すだけ。
ネフロイド(Nephroid)の場合: a = 2 であとは 既定値を使うので "Enter" キーを押すだけ。
クレモナ(Cremona)の場合: a = 3 であとは 既定値を使うので "Enter" キーを押すだけ。
一本の線を引いて、次の線を引くまでの時間は 自動的に 7200 を 一周の分割数
で割り算した値に設定されている。 例えば 一周の分割数=72 のときは 100 ms(mil1i second)
7200/72 ms = 100 ms, つまり 100/1000 秒 = 1/10 秒 である。
************ string_cardioid_model.dwg ************
******************* 部分拡大図 *******************
この図面の作成方法 :
プログラム draw_epicycloid.lsp をロードする。 (load "draw_epicycloid")
コマンド ラインから epicycloid_model と実行命令をタイプする。
(入力データ) 内側の円の半径= 1, 外側の円の半径= 1, に設定して、 一周を 72 分割にする。
実行終了後、 図面に修正を加える。
先ず包絡線を作る過程を説明して、その後それが確かに包絡線であることの証明をしよう。
例として ハート形を選ぶ。
1. 円周を N 等分して各点に図のように 0 から 順番に1,2,3,...(赤紫色で示す) と番号をつける。 ここでは N = 72
2. 始める点の番号を Mとする。
3. #M の点と #2M の点を結ぶ。 次に#2M の点と #4M の点を結ぶ。 次に#4M の点と #8M の点を結ぶ。 .....
(例)--- #1 の点から始める。 #1-- #2-- #4-- #8-- #16-- #32-- #64 と結ぶ。
次は #3-- #6-- #12-- #24-- #48-- と結ぶ。
次は #5-- #10-- #20-- #40-- と結ぶ。
次は #7-- #14-- #28-- #56-- と結ぶ。
ではこれが包絡線としてハート形になっていることを証明しよう。
上記の "" .... #10-- #20-- と結ぶ。" に 注目しよう。 #10, #20 の 点をそれぞれ P,Q とする。静止円の中心点 O と P を結ぶ直線は 静止円と T で交わり PT の中点 S は動円が T に接しているときの円の中心で あるから TS = SP である。 このときの動円上の点 R が 線分PQ 上にあり PR : RQ = 1 : 2 であり しかも ∠PRT が直角であることをしめす。 先ず OP が X 軸となす角を θ とする。 点 P, Q ,R の座標は次のようになる。 P: Px = 3a cos θ Py = 3s sin θ Q: Qx = 3a cos 2θ Qy = 3s sin 2θ R; Rx = a(2cos θ + cos 2θ) Rx = a(2sin θ + sin 2θ) 線分PQ を 1:2 に内分する点の座標を求めると x = (1/3)(Px + 2Qx)= Rx y = (1/3)(Py + 2Qy)= Ry となり この点は R に他ならないことがわかる。 また R は PT を直径とする円周上の点であるから ∠PRT は 直角である。
ネフロイドの場合 : ハート形との違いは次の部分である。
3. #M の点と #2M の点を結ぶ。 次に#2M の点と #4M の点を結ぶ。 次に#4M の点と #8M の点を結ぶ。 .....
これが
3. #M の点と #3M の点を結ぶ。 次に#3M の点と #9M の点を結ぶ。 .....
となる。
例えば 下の図で #5 と #15 を結ぶ。
それと PR : RQ = 1 : 2 が PR : RQ = 1 : 3 になる。
QO が RS と平行であることにも注目されたい。
ここまでくれば クレモナの場合に どうなるかは推測できるであろう。
************ string_nephroid_model.dwg ************
******************* 部分拡大図 *******************
この図面の作成方法 :
プログラム draw_epicycloid.lsp をロードする。 (load "draw_epicycloid")
コマンド ラインから epicycloid_model と実行命令をタイプする。
(入力データ) 内側の円の半径= 2, 外側の円の半径= 1, に設定して、 一周を 72 分割にする。
実行終了後、 図面に修正を加える。
******* deltoid_curve.dwg
******* ****** astroid_curve.dwg
****** ******* 5_cusp_curve.dwg*******
** デルタ形のアニメーションを見る ** 星芒形のアニメーションを見る ** 5カスプのアニメーションを見る
この図面とアニメーションの作成方法 :
プログラム draw_hypocycloid.lsp をロードする。 (load "draw_hypocycloid")
コマンド ラインから draw_hypocycloid_auto と実行命令をタイプする。
入力の既定値は a = 3, b = 1, 一周の分割数 = 72 に設定してあるから
デルタ形の場合: 総て 既定値を使うので "Enter" キーを押すだけ。
星芒形の場合: a = 4 であとは 既定値を使うので "Enter" キーを押すだけ。
5カスプの場合: a = 5 であとは 既定値を使うので "Enter" キーを押すだけ。
原点 Oを中心として半径a の円の内側に沿って 半径b の円 (中心Pの始点をPOとする)が動くときの 動円上の点の軌跡は次のようになる。 動円の中心がPにきた時 OP がX軸となす角をθ とすると そこに来るまでに 動いた弧の距離は (a - b)θ であるから 動円が回転した角度を α とすると b α = (a - b)θ である。 従って α = {(a - b)/b} θ その結果 ハイポサイクロイド 上の点Q(x,y) は次のような式で書き表される。 x = (a - b)cosθ + b cos α y = (a - b)sinθ - b sin α ここで α = {(a - b)/b} θ 例(1):デルタ形 (a = 3b) x = b{2cosθ + cos2θ} y = b{2sinθ - sin2θ} 例(2):アストロイド (a = 4b) x = b{3cosθ + cos3θ} = a(cosθ)3 y = b{3sinθ - sin3θ} = a(sinθ)3 (cosθ)2 + (sinθ)2 = 1 を使って θ を 取り除くと アストロイド が次のような式で表される。 X(2/3) + Y(2/3) = a(2/3)
この図面の作成方法 :
プログラム draw_hypocycloid.lsp をロードする。 (load "draw_hypocycloid")
コマンド ラインから hypocycloid_model と実行命令をタイプする。
(入力データ) 外側の円の半径= 3, 内側の円の半径= 1, に設定して、 一周を 72 分割にする。
実行終了後、 図面に修正を加える。
****** string_deltoid.dwg
****** ***** string_astroid_1.dwg
***** *** string_hypocycloid_6.dwg ***
デルトイド-Deltoid のアニメーション アストロイド-Astroid のアニメーション 六角ハイポサイクロイドのアニメーション
この図面とアニメーションの作成方法 :
プログラム string_hypocycloid.lsp をロードする。 (load "string_hypocycloid")
コマンド ラインから string_hypocycloid と実行命令をタイプする。
入力の既定値は カスプの数 = 3, 一周の分割数 = 36 に設定してあるから
デルトイドの場合: 総て 既定値を使うので "Enter" キーを押すだけ。
アストロイドの場合: a = 4 であとは 既定値を使うので "Enter" キーを押すだけ。
六角 ハイポサイクロイド: a = 6 であとは 既定値を使うので "Enter" キーを押すだけ。
一本の線を引いて、次の線を引くまでの時間は 自動的に 7200 を 一周の分割数
で割り算した値に設定されている。 例えば 一周の分割数=72 のときは 100 ms(mil1i second)
7200/72 ms = 100 ms, つまり 100/1000 秒 = 1/10 秒 である。
************* string_deltoid_model.dwg *************
********* string_deltoid_one_cusp.dwg *********
この図面の作成方法 :
プログラム string_hypocycloid.lsp をロードする。 (load "string_hypocycloid")
*** string_deltoid_model.dwg の場合:
コマンド ラインから string_hypocycloid_model と実行命令をタイプする。
(入力データ) 外側の円の半径= 3, 外側の円の半径= 1, に設定して、 一周を 36 分割にする。
実行終了後、 図面に修正を加える。
*** string_deltoid_one_cusp.dwg の場合:
コマンド ラインから string_one_cusp と実行命令をタイプする。
(入力データ) 外側の円の半径= 3, 外側の円の半径= 1, に設定して、 一周を 36 分割にする。
実行終了後、 図面に修正を加える。
先ず包絡線を作る過程を説明して、その後それが確かに包絡線であることの証明をしよう。
例として デルトイドを選ぶ。
1. 中心が点 O で半径が (a-2b) の円を描く。
2. この円周上に X 軸から 角度 θ の点を P, AO から αの点を U とする。
3. UPの延長と OB の交点を V とする。 UV を結ぶ。
4. X 軸に対称な 下の円周にも同様な線を引く。
5. これを (θ + α) が 180° になるまで繰り返す。
6. これで 一個のカスプが 出来上がったので これを 点O のまわりに 回転 コピーすると
デルトイド が出来る。
実例を上の右図に示した。
ここでは (a - 2b) の円を 36 等分 している。
便宜上、円周上の 点に 図のような番号付けをする。
#1 - #16, #2 - #14, #3 - #12, #4 - #10, #5 - #8 と順番に線をひく。
更に #35 - #20, #34 - #22, #33 - #24, #32 - #26, #30 - #28 と結ぶ。
この場合のように 最後の #6, #29 は点が一つしかない時は 円の中心と結ぶ線に
直角の線を引き それと OB との交点を求める。
包絡線であることの証明。
先ず OP が X 軸となす角を θ とする。 点 R , M の座標は次のようになる。 R: Rx = a cos θ Ry = a sin θ M: Mx = a cos 2θ My = -a sin 2θ 線分PQ を 1:2 に内分する点の座標を求めると x = (a/3)(2Rx + Mx)= (a/3){2 cos θ + cos 2θ} y = (a/3)(2Ry + My)= (a/3){2 sin θ - sin 2θ} となり この点は デルトイド上にある 点 S に他ならないことがわかる。 QP = QS = QR であるから ∠RSP は 直角である。 また R は 動円の回転中心であるから UV は デルトイドの接線になっている。 従って UV の 集合は デルトイド の包絡線である。
cardioid_36_576.dwg cardioid_36_576.jpg Cardioid |
nephroid_36_576.dwg nephroid_36_576.jpg Nephroid |
cremona_36_576.dwg cremona_36_576.jpg Cremona |
cardioid_36_288_wide.dwg cardioid_36_288_wide.jpg Cardioid |
nephroid_36_288_wide.dwg nephroid_36_288_wide.jpg Nephroid |
cremona_36_288_wide.dwg cremona_36_288_wide.jpg Cremona |
x = k cos(pt) + (1 - k) cos(qt) y = k sin(pt) + (1 - k) sin(qt)このモデルを使うと エピサイクロイド 、ハイポサイクロイドの両方が同じアルゴリズムで描ける。
2d_model_cardioid.dwg 2d_model_cardioid.jpg Cardioid Model ハート形-Cardioid のアニメーション |
2d_model_deltoid.dwg 2d_model_deltoid.jpg Deltoid Model デルトイド-Deltoid のアニメーション |
Epicycloid Case: cardioid: 2 1 1/3 nephroid: 3 1 1/4 cremona : 4 1 1/5 4 cusps : 5 1 1/6 Hypocycloid Case: Deltoid : 2 -1 -1 Astroid : 3 -1 -0.5 5 stars : 4 -1 -1/3 6 stars : 5 -1 -1/4
3d_cardioid_view.dwg 3d_cardioid_view.jpg 3d Cardioid Model ハート形-Cardioid のアニメーション |
3d_deltoid_view.dwg 3d_deltoid_view.jpg 3d Deltoid Model デルトイド-Deltoid のアニメーション |
Epicycloid Case:
3d_cardioid.dwg 3d_cardioid.jpg Cardioid |
3d_nephroid.dwg 3d_nephroid.jpg Nephroid |
3d_cremona.dwg 3d_cremona.jpg Cremona |
Hypocycloid Case:
3d_deltoid.dwg 3d_deltoid.jpg Deltoid |
3d_astroid.dwg 3d_astroid.jpg Astroid |
3d_5star.dwg 3d_5star.jpg 5 Star |
Epicycloid Case: cardioid: 2 1 1/3 nephroid: 3 1 1/4 cremona : 4 1 1/5 4 cusps : 5 1 1/6 Hypocycloid Case: Deltoid : 2 -1 -1 Astroid : 3 -1 -0.5 5 stars : 4 -1 -1/3 6 stars : 5 -1 -1/4
group_cardioid_1.dwg group_cardioid_1.jpg Deltoid |
group_nephroid_1.dwg group_nephroid_1.jpg Astroid |
group_cremona_1.dwg group_cremona_1.jpg 5 Star |
Epicycloid Case: cardioid: 2 1 nephroid: 3 1 cremona : 4 1 パラメター k は 0.05 - 0.85 の間を 200 等分して自働的に設定されている。 曲線には layer 番号が 1から 200 まで付けられてそれにより 色が変えられるように なっている。Case of each curve divided in 360 colors:
group_cardioid_2.dwg group_cardioid_2.jpg Deltoid |
group_nephroid_2.dwg group_nephroid_2.jpg Astroid |
group_cremona_2.dwg group_cremona_2.jpg 5 Star |
Epicycloid Case: cardioid: 2 1 nephroid: 3 1 cremona : 4 1
group_5star_1.dwg group_5star_1.jpg |
Negative - option Red group_5star_1_negativer.jpg |
Negative - option Blue group_5star_1_negativeb.jpg |
Despeckle group_5star_1_despeckle.jpg |
Water Color group_5star_1_watercolor.jpg |
Texture- Brick option group_5star_1_brick.jpg |
************* string_astroid_model.dwg *************
********* string_astroid_by_line.dwg *********
*** string_astroid_model.dwg の場合:
この図面の作成方法 :
プログラム string_hypocycloid.lsp をロードする。 (load "string_hypocycloid")
コマンド ラインから string_hypocycloid_model と実行命令をタイプする。
(入力データ) 外側の円の半径= 4, 外側の円の半径= 1, に設定して、 一周を 36 分割にする。
実行終了後、 図面に修正を加える。
*** string_astroid_by_line.dwg の場合:
この図面とアニメーションの作成方法 :
プログラム string_by_line.lsp をロードする。 (load "string_by_line")
コマンド ラインから astroid_auto と実行命令をタイプする。
(入力データ) 8 分割にする。
先ず LV = OR = a (外側の円の半径)であることを 説明しておく。
UV が Y軸と交わる点を L とする。
ON は UV に下ろした垂線である。
α, β , θ の間には次の関係がある。
α = { {a-b) / b } θ
β = π - (α + θ) = π - 4 θ
ΔOLV を考える。 ∠NOV = β/2 + θ = (1/2)(π - 4θ) + θ = π/2 - θ 従って ∠NVO = π/2 - ∠NOV = θ 更に ∠LOP = π/2 - θ = ∠OLP ΔOLVにおいて ΔOLP ΔOVP はいずれも 二等辺三角形である。 故に LP = OP = PV そして LV = 2 (OP) = a (外側の円の半径)
言い換えるならば 、 長さ a の棒 をそれぞれの端点が X,Y 軸上に沿って動くようにすると
その包絡線が アストロイド になる。
************** parabola_property.dwg **************
************** parabola_by_line.dwg **************
*** parabola_property.dwg の場合:
この図面の作成方法 :
プログラム parabola.lsp をロードする。 (load "parabola")
コマンド ラインから parabola_prop と実行命令をタイプする。
実行終了後、 図面に修正を加える。
*** parabola_by_line.dwg の場合:
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから parabola_by_line と実行命令をタイプする。
(入力データ) 10 分割にする。(既定値)
上の右の図のように 2本の直線を同じ数で等分割して その点を順序正しく線でつなぐと
包絡線として放物線が得られることはよく知られている。
包絡線が放物線であることの証明はなんと 2000年 以上も前に
アポロ二ウス(Apollonius of Perga(about 262 BC - about 190 BC) ) によってなされている。(参考 9 )
彼の著書 "Conics" の第 III 巻、には 定理 41 (Proposition 41)が次のように述べられている。
"放物線に接する3本の直線が交わるとき、それらはお互いに同じ比に分割される。"
上の図を参照のこと。
A, B, C は 放物線上の点で ADE, EFC, DBF はそれに接する直線である。
そのとき CF : FE = ED : DA = FB : BD である。
この定理の証明には 、第 I, II 巻の結果を使うので、長くなるのでここでは省略する。
(参考 3 )には簡単な説明がされているから 、興味のある人は それを参照されたい。
放物線の定義には 焦点と directrix が必要である。 この場合にそれを見つける方法がある。
そのためには(参考 3)に次のように述べてある特性を利用する。
"Three tangents to a parabola form a triangle whose orthocentre lies on the
directrix and whose circumcircle passes through the focus"
焦点とdirectrix を図式的に求める方法
直線 AB, AD を三等分して上と同様な包絡線を引く。
すると 2 つの 三角形 ΔA11, ΔA22 ができる。
それぞれの外接円の交点 F が 焦点である。
2 つの 三角形のorthocenter をそれぞれD1,D2 とする。
直線D1-D2 が directrixである。
この図面の作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから parabola_by_line と実行命令をタイプする。
(入力データ) 3 分割にする。
実行終了後、 図面に修正を加える。
************** parabola_focus_dx.dwg **************
(参考 5)の著者は 包絡線の方法を 放物線を描く 5 番目として説明しているが
"...確かに放物線ではあるが 焦点、その他の特性をもとめることが 困難であり、実用性に乏しい。"
と述べるにとどめている。
しかし アートの心得のある(参考 3)の著者 Jon Millington にとっては これは ストリング アート のアイデアの宝庫である。
次にその一部を紹介しておく。
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから polygon_demo と実行命令をタイプする。
(入力データ) 正多角形の辺の数を入力する。
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから test_raindrop と実行命令をタイプする。
****** basic_raindrop.dwg ******
このアイデアを正多角形に適用した結果を示す。
********* 3_raindrop.dwg ********
******** 4_raindrop.dwg *******
******** 5_raindrop.dwg ********
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから raindrop_demo と実行命令をタイプする。
(入力データ) 正多角形の辺の数を入力する。
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから star_demo と実行命令をタイプする。
(入力データ) 星の角の数を入力する。
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから petal_demo と実行命令をタイプする。
(入力データ) 花弁の数を入力する。
tetra_1.dwg tetra_1.jpg tetra parabola |
tetra_2.dwg tetra_2.jpg tetra raindrop |
octa_1.dwg octa_1.jpg 8 parabolas |
octa_2.dwg octa_2.jpg 8 raindrops |
octa_3.dwg octa_3.jpg 2 footballs |
icosa1.dwg icosa1.jpg 10 parabolas |
icosa2.dwg icosa2.jpg 20 parabolas |
icosa3.dwg icosa3.jpg 10 parabolas #2 |
icosa4.dwg icosa4.jpg 10 raindrops |
icosa5.dwg icosa5.jpg 20 raindrops |
この図面とアニメーションの作成方法 :
プログラム curve_stitch.lsp をロードする。 (load "curve_stitch")
コマンド ラインから tetra1, tetra2, octa1, octa2, octa3, icosa1, 2, 3, 4, 5 と実行命令をタイプする。
シムソン線
Δ ABCの外接円周上の点 P から BC, CA, AB に下ろした垂線の足をそれぞれ A1,B1,C1とすると
三点 A1,B1,C1 は一直線上にある。(この直線をP のシムソン線という。) (下の左図)(参考 XXX )
シムソン線は幾つかの面白い特性を持っている。 その中で最も驚くべきことは 点P が円周を一回りするとき
そのシムソン線の包絡線が デルトイド (Deltoid)になることである。 (下の右図)
これについては ( ) にスタイネル
Jakob Steiner (1796 - 1863)
による証明が述べられている。
その理由で デルトイド のことを スタイネル のハイポサイクロイド(Steiner's Hypocycloid) と呼ぶ人もいる。
************** Simson_line.dwg **************
********** deltoid_by_Simson.dwg **********
この図面の作成方法 :
プログラム envelop_by_line.lsp をロードする。 (load "envelop_by_line")
コマンド ラインから simson_test1, simson_test2 と実行命令をタイプする。
実行終了後、 図面に修正を加える。
シムソン線の包絡線を綺麗に描くにはシムソン線とデルトイドの関係を利用することが必要である。 それは
1. デルトイドに内接する円は ΔABC の九点円である。
九点円を簡単に描くには 三辺の中点を通る円を作ればよい。九点円については (参考 )を参照されたい。
2. デルトイドのカスプの方向はΔABC の内部に作った モーリーの三角形(Morley's Triangle)の方向と一致する。
モーリーの三角形 はケンブリッジ大学で数学を学んだ後 アメリカに移住して アメリカの数学界に大きな貢献をした
フランク モーリーFrank Morley(1860 - 1937)
による モーリーの定理 (Morley's Theorem)で定義される正三角形のことである。
モーリーの定理 (Morley's Theorem)
任意の三角形の内角を三等分する線をひく。各辺に近い一組の線の交点を結ぶ三角形は 正三角形である。
この定理の証明は (参考 )に述べられている。
この図面とアニメーションの作成方法 :
プログラム envelop_by_circle.lsp をロードする。 (load "envelop_by_circle")
コマンド ラインから limason_by_circle_1, 2, 3 と実行命令をタイプする。
この図面とアニメーションの作成方法 :
プログラム envelop_by_circle.lsp をロードする。 (load "envelop_by_circle")
コマンド ラインから epicycloid_by_circle と実行命令をタイプする。
(入力データ) 突起の数を入力する。 (2 , 3 , 4 ...)
直角双曲線 x2 - y2 = c2 上の点 T(a,b)を中心とし 中心点 (0,0) を通る円は f(x,y,a,b) = x2 -2ax + y2 - 2by = 0 (1) a2 - b2 = c2 なる関係を使うと この式は f(x,y,a) = x2 - 2ax + y2 - 2y(a2 - c2)1/2 = 0 (2) となる。 包絡線は ∂f/∂a = 0 を満足するから ∂f/∂a = -2x -2ay/(a2 - c2)1/2 = 0 (3) これから次の関係が得られる。 a2(x2- y2) = c2x2 (4) (4)を (2)に代入して パラメター a を消去すると (x2 + y2)2 = c2(x2 - y2) (5) 極座標表示をすると r2 = c2cos2θ (6) ここで r = (x2 + y2)1/2 cosθ = x/r; sinθ = y/r である。 (5),(6) 式が "ベルヌーイの双葉曲線" である。
この図面とアニメーションの作成方法 :
プログラム envelop_by_circle.lsp をロードする。 (load "envelop_by_circle")
コマンド ラインから leminiscate_by_circle と実行命令をタイプする。
放物線 --- シッソイド (Cissoid of Diocles)
正確には"デオクレスのシッソイド" (cissoid of Diocles)と呼ぶべきこの曲線はデオクレスが立方体の倍積問題を解くために発明したものである。
その語源は ギリシャ語の kissos (つた 蔦 )である。 カスプ の形がつたの葉に似ていたからだと言われている。
現在では シッソイド は垂足曲線などと同じく曲線を作り出す一手法として解釈されているので "----のシッソイド" の形式で使われている。
直角双曲線 x2 = 4 k y 上の点 T(a,b)を中心とし 中心点 (0,0) を通る円は f(x,y,a,b) = x2 -2ax + y2 - 2by = 0 (1) a2 = 4kb なる関係を使うと この式は f(x,y,a) = x2 - 2ax + y2 - (y/2k)a2 = 0 (2) となる。 包絡線は ∂f/∂a = 0 を満足するから ∂f/∂a = -2x -(a/k)y = 0 (3) これから次の関係が得られる。 a = -2k(x/y) (4) (4)を (2)に代入して パラメター a を消去すると x2 y + 2k x2/y + y2 = 0 (5) (5) に y を乗じる と x2(y + 2k) + y3 = 0 書き換えると x2 = - y3/(y + 2k) (6) 極座標表示をすると r = -2k(cosθ)2/sinθ (7) ここで r = (x2 + y2)1/2 cosθ = x/r; sinθ = y/r である。 (6),(7) 式が "デオクレスのシッソイド" である。
この図面とアニメーションの作成方法 :
プログラム envelop_by_circle.lsp をロードする。 (load "envelop_by_circle")
コマンド ラインから cissoid_by_circle_x と実行命令をタイプする。
楕円群: (x/a)2 + (y/b)2 = 1 a x b = k (const) これから (x2/a3)da + (y2/b3)db = 0 b.da + a.db = 0 ここで (x2/a3) = λb , (y2/b3) = λa とおくと 微分によってえられた両式は同値になる。そして 最初の式に a をかけて、次式にbをかけて、加え会わせると 1 = 2λab = 2λk 従って λ = (1/2k) (xy)2 = (k/2)2 即ち xy = k/2 これは 双曲線である。
この図面とアニメーションの作成方法 :
プログラム envelop_by_ellipse.lsp をロードする。
(load "envelop_by_ellipse")
コマンド ラインから hyperbola_by_ellipse と実行命令をタイプする。
************ hyperbola_by_ellipse.dwg ************
楕円群: (x/a)2 + (y/b)2 = 1 a + b = k (const) これから (x2/a3)da + (y2/b3)db = 0 da + db = 0 ここで (x2/a3) = λ , (y2/b3) = λ とおくと 微分によってえられた両式は同値になる。そして 最初の式に a をかけて、次式にbをかけて、加え会わせると (x/a)2 + (y/b)2 = 1 = λ(a + b) = λk 従って λ = 1/k x2/3 = (a3λ)1/3 = aλ1/3 y2/3 = (b3λ)1/3 = bλ1/3 であるから 加え合わせると x2/3 + y2/3 = (a + b)λ1/3 = k(1/k)1/3 = k2/3 これは アストロイド ( Astroid ) である。
この図面とアニメーションの作成方法 :
プログラム envelop_by_ellipse.lsp をロードする。
(load "envelop_by_ellipse")
コマンド ラインから astroid_by_ellipse と実行命令をタイプする。
************ astroid_by_ellipse.dwg ************
************ trajectory_desc.dwg ************
******** envelop_by_parabola.dwg *********
この図面の作成方法 :
プログラム trajectory.lsp をロードする。 (load "trajectory")
コマンド ラインから epicycloid_model と実行命令をタイプする。
(入力データ) 内側の円の半径= 1, 外側の円の半径= 1, に設定して、 一周を 72 分割にする。
実行終了後、 図面に修正を加える。
x,y 方向の初速は それぞれ V0cosθ , V0sinθ であるから 時間 t が経過した時点での 速度成分を Vx, Vy とすると Vx = dx/dt = V0cosθ (1) Vy = dy/dt = -V0sinθ + gt (2) である。ここで g は 重力加速度 である。 発射後、t 時間 経過した時点での x,y は (1),(2)を 時間積分すると得られる。 x = V0cosθ t (3) y = -V0sinθ t + (g/2)t2 (4) この式を使うと 時間 t をパラメターとして x-y 平面上に 放物線が描かれる。 包絡線を 見つけるためには このパラメター t を取り除く必要がある。 そのためには (3) から得られる t = x/(V0cosθ) (5) を (4) に代入して y を x の関数として表す。 y = -(tanθ)x + (g/2)(x/V0cosθ)2 (6) 書き換えると f(x,y) = y + tanθ - (g/2)(x/V0cosθ)2 (7) 包絡線を求めるために ∂f/∂θ = 0 と 置くと ∂f/∂θ = 1 - (g x tanθ )/(V0)2 = 0 (8) これから (tanθ) x = (V0)2/g (9) これを (6)に代入して 1/(cosθ)2 = 1 + (tanθ)2 なる等式を使うと y = -(1/2g)(V0)2 + (g/2)(x/V0)2 (10) が得られる。 これが 求める 包絡線である。 つまり この包絡線は -(1/2g)(V0)2 の高さから 水平に発射したときに銃弾の描く 放物線である。 -(1/2g)(V0)2 は θ=90 度 の時上昇出来る最大の高度である。
パラメター c を含む曲線群
f(x,y,c) = 0 (1) が与えられたとき (∂f/∂c) = 0 (2) を使って (1) から パラメター c を消去して得られる F(x,y) = 0 (3) が包絡線である。 パラメター が二個(a,b)ある場合: 曲線群 : f(x,y,a,b) = 0 パラメターの条件: g(a,b) = 0 f と g を a, b で偏微分して (∂f/∂a)da + (∂f/∂b)db = 0 および (∂g/∂a)da + (∂g/∂b)db = 0 これらを同時に満足するには (∂f/∂a) = λ(∂g/∂a) (∂f/∂b) = λ(∂g/∂b) でなければならない。この関係を使って a,b を消去すれば 包絡線 F(x,y) = 0 が得られる。 ここで λ は未定の定数である。以下に例題を使って説明する。
直線群 : x/a + y/b = 1 a + b = k (const) これから (x/a2)da + (y/b2)db = 0 da + db = 0 ここで x/a2 = λ2 , y/b2 = λ2 とおくと 微分によってえられた両式は同値になる。そして √x + √y = aλ + bλ = λ = const がパラメター a,b を消去した結果となる。 これは 放物線である。
この図面の作成方法 :
プログラム envelop_by_line.lsp をロードする。 (load "envelop_by_line")
コマンド ラインから parabola_by_line と実行命令をタイプする。
結果の図に変更を加える。
楕円群: (x/a)2 + (y/b)2 = 1 a x b = k (const) これから (x2/a3)da + (y2/b3)db = 0 b.da + a.db = 0 ここで (x2/a3) = λb , (y2/b3) = λa とおくと 微分によってえられた両式は同値になる。そして 最初の式に a をかけて、次式にbをかけて、加え会わせると 1 = 2λab = 2λk 従って λ = (1/2k) (xy)2 = (k/2)2 即ち xy = k/2 これは 双曲線である。
この図面の作成方法 :
プログラム envelop_by_ellipse.lsp をロードする。 (load "envelop_by_ellipse")
コマンド ラインから hyperbola_by_ellipse と実行命令をタイプする。
結果の図に変更を加える。
放物線 x2 = 4ky 上の点 T(a,b) を中心として 原点 (0,0) を通る 円群の 包絡線 を見つける。 円の方程式は : f(x,y,a) = x2 - 2ax + y2 - (y/2k)a2 = 0 これを a で微分すると ∂f/∂a = -2x -ay/k = 0 これから a = -2k(x/y) これを 円の方程式に代入すると 次の様な結果になる。 x2y + 2kx2 + y3 = 0 書き換えると x2 = - y3/(y + 2k) 点 P の軌跡は y = -2k を漸近線とする デオクレス のシッソイド (cissoid of Diocles)である。 点 Q は 接線 ET 上に下ろした 垂線 との交点である。 このような 点Q の軌跡 は 垂足曲線 (pedal curves) と呼ばれている。 OQ = QP なる関係があるので Q もまた 別のシッソイド 上にある。 その曲線の式は x2 = - y3/(y + k) である。
この図面の作成方法 :
プログラム envelop_by_circle.lsp をロードする。 (load "envelop_by_circle")
コマンド ラインから cissoid_by_circle_x と実行命令をタイプする。
結果の図に変更を加える。
あたえられた 曲線 f(x,y) = 0 (1) 上の点 T(a,b)における 接線は (x - a)(∂f/∂x)a + (y - b)(∂f/∂y)b = 0 (2) ここで (∂f/∂x)a (∂f/∂y)b は それぞれ (∂f/∂x) (∂f/∂y) の 点T での値である。 簡単に それぞれ fa, fb と書くことにする。 また 一般の直線は極座標表示では x cosα + y sin α - p = 0 (3) 2式 (2),(3)が同一の直線であるための条件は fa / cosα = fb / sin α = (a fa + b fb)/ p (4) 上の 2式 (1),(4) から 二個のパラメター a,b を消去した関係式が 点 P の軌跡を表すことになる。
この図面の作成方法 :
cissoid_by_circle_desc.dwg を90度回転したあと 修正を加える。
******** pedal_curve_desc.dwg ********
放物線 x2 = 4ky に対して 原点(0,0) を極とする 垂足曲線 を見つける。 f(x,y) = x2 - 4ky = 0 T(a,b) における fa, fa の値は fa = 2a fa = -4k 従って 上の (4) 式は次のようになる。 2a/cosα = -4k/sinα = a2 / p これから cosα = 2p/a , sinα = -4kp/a2 cosα , sinα を使って パラメター a を消去する。 (cosα)2/ sinα = - p/k 書き替えると p = -k(cosα)2/ sinα これは デオクレス のシッソイド (cissoid of Diocles)である。 直交座標を使うと x2 = - y3/(y + k) となる。
この図面の作成方法 :
プログラム curve_by_pedal.lsp をロードする。 (load "curve_by_pedal")
コマンド ラインから cissoid_by_pedal_x と実行命令をタイプする。
質問、問い合わせは 筆者 岩本 卓也 宛てにお願いします。
Copyright 2006 Takaya Iwamoto All rights reserved. .