包絡線
包絡線(ほうらくせん、envelope)とは、与えられた曲線族と接線を共有する曲線、すなわち与えられた(一般には無限個の)全ての曲線たちに接するような曲線のことである。
包絡線(ほうらくせん、envelope)とは、与えられた曲線族と接線を共有する曲線、すなわち与えられた(一般には無限個の)全ての曲線たちに接するような曲線のことである。
- Wikipedia
以下の方法で描画する。
- 2つの非表示タートルを用意する。
- 各々を1ステップずつ移動しながら、両者の間に線を引く。
- 始点はX軸上を左から右へ、終点はY軸上を上から下へ等速で動かす。
描いてみる
tt = Turtle ! create penup 1 linewidth (blue) linecolor. tt:drawExpandedL = [ | ts te length ; x1 y1 x2 y2 angle | x1 = ts!xPosition?. y1 = ts!yPosition?. x2 = te!xPosition?. y2 = te!yPosition?. [x2 == x1] ! then [ [ y2 > y1 ] ! then [ angle = 90 ] else [ angle = 270 ] execute ] else [ angle = atan( (y2 - y1) / (x2 - x1)). [ x2 < x1 ] ! then [ angle = angle+180] execute ] execute. self ! penup (x1) (y1) moveto (angle) direction 180 leftturn. self ! pendown (length) forward. self ! penup (x1) (y1) moveto. self ! pendown (x2) (y2) moveto. self ! (angle) direction (length) forward. self ! penup. self ! penup 0 direction (x1) (y1+5) moveto pendown 5 circle. self ! penup 0 direction (x2) (y2+5) moveto pendown 5 circle. ]. tx = Turtle ! create hide. ty = Turtle ! create hide. tx ! -300 -200 moveto. ty ! 0 300 moveto -90 direction. STEP = 10. [ | i | tt ! (tx) (ty) 300 drawExpandedL. tx ! (STEP) forward. ty ! (STEP) forward. ] ! 91 repeat.
なんか放物線ぽい包絡線ができた。
包絡線の性質を調べてみる
現れた包絡線がなんなのか調べてみよう。t をパラメータとすると、始点P1と終点P2の座標は、
P1が (t,0)、P2が (0,1-t) になる。
P1 と P2 を通る直線群はパラメータ t を使って(式1)と書けるので
これを t について整理して(式2)を得る。
包絡線外側の直線が通過する領域は、任意の(x、y)に対して
そこを通過する直線(式1)が存在するので(式2)のtに実数解を持つ。
したがって、2次方程式の解の公式(式3)の判別式 D=b2 ― 4ac の
正負境界が包絡線を表していることになる。
(式2)の判別式Dは(式4)なので、整理すると(式5)になる。
ここで X=(x-y)、Y=(x+y) と変数変換をすることにより(式6)が得られる。
この結果、図に現れた包絡線が45°傾いた放物線であることが分かった。
だいたいこれであってると思うのだが、途中の変換とかは自信がないので間違ってるかもしない。
間違ってたら教えてください。
始点・終点を傾けて移動する
さっきは始点・終点をX軸、Y軸上を移動させていたが、
今度は y=x、y=-x 軸上を等速移動させる。
... tx ! -200 -200 moveto 45 direction. ty ! -300 300 moveto -45 direction. // tx ! -300 -200 moveto. // ty ! 0 300 moveto -90 direction. ...
今度はちゃんと上を向いた放物線になった。
0 件のコメント:
コメントを投稿