放物線と直線・接線

放物線とそれに交わる直線や接線とで囲まれた領域の図はよく使われる図なので,ちょっと手直しをすればよいようにツール化しました。

次のような図です。


作図画面はこのようになっています。

放物線を描くのに,2次関数の係数を与えますが,実際には焦点と準線で描いています。

直線も1次関数の係数をを与えますが,実際には2点を結ぶ直線です。

交点は計算するのではなくCinderellaの作図ツール「交点を求める」で描いており,接線も「点の極線を加える」ツールで描いています。計算のスクリプトを書く必要がありません。

スクリプトは次のようになっています。

// 放物線の係数 pa*x^2+pb+x+pc と 直線の係数 la*x+lb

pa=1;

pb=0;

pc=0;

la=1/2;

lb=2;

// 焦点Aと準線を決めるB,C コメント化すればA,B,Cは自由点

A.xy=[0,1/(4*pa)];

B.xy=[-6,-1/(4*pa)];

C.xy=[6,-1/(4*pa)];

// 直線を決めるD,E コメント化すれば自由点

pxy=[-b/2/pa,(4*pa*pc-pb^2)/4/pa];// 平行移動量

D.xy=[-4,(-4)*la+lb]+pxy;

E.xy=[4,4*la+lb]+pxy;

Parabolaplot("1",[A,B,C]);

//以下は必要なものを描画

// 直線F,G

Lineplot([F,G]);

//2本の接線

Lineplot([F,H]);Lineplot([G,H]);

//ハッチをかける。

// 作図が完了してから Hatchdata(・・)を有効にする。//をとる

// 放物線と直線FGで囲まれる部分

//Hatchdata("1",["ii"],[["rt1para","n"],["lnFG","s"]]);

// 放物線と接線で囲まれる部分

//Listplot([F,H,G],"nodisp");

//Hatchdata("2",["ii"],[["rt1para","s"],["sgFHG","n"]]);

// 点の文字 適当に追加

Letter([F,"nw2","A",G,"se","B",H,"e2","P"]);

係数 pa,pb,pc,la,lb は放物線,直線の式の係数で,ここから焦点を準線の位置を計算しています。

Aが焦点,B,Cが準線を決める点ですが,コメント化すれば焦点と準線はマウスドラッグで自由に動くようになります。

直線に関しても同様です。

parabolaplot(・・)で放物線を描いています。

その他の直線や領域,文字については必要なものを残し,あとはコメント化すればよいです。

Letter(・・) については適当に追加・削除します。

なお,Hatch()はScilabとのデータのやり取りをするので,放物線と直線の作図を確かめてから有効にするのがよいでしょう。

ツールはParaAndLine.cdyです

< 戻る >