ケプラーの第2法則

ケプラーの第2法則「面積速度一定の法則」の図を描きます。

まず,シンデレラで必要な図を書きます。

楕円を描くには,焦点と通る点を使いますので,適当にこれらの点を取ります。

楕円を描くツールで,焦点にA,B,通る点にCを指定して楕円を描きます。

この楕円上に点を4つ取ります。すると,とった点はこの楕円上だけを動かせるようになります。

点を取ったら,一方の焦点と結んだ線分を描きます。

作図はここまでです。

あとはスクリプト。

まず,焦点と通る点をきちんと決めるには

A.xy=[-sqrt(5),0];

B.xy=[sqrt(5),0];

C.xy=[0,2];

とします。

次に,

・点の大きさを適当に決めて(ここでは3)それをPtsize()で指定する。

・Pointdata()で焦点を2つ表示する。

・Ellipseplot()で楕円を表示する。

・折れ線を2組(EBD,GBF)描く。

ここで注意するのは頂点の順番です。

楕円が反時計回りに描かれますので,折れ線も反時計回りに回ります。

・弧DE,FGを楕円の一部と考えて,Partcrvs()でデータを作る。

・折れ線と弧をJoincrvsでつないで閉曲線にする。

・Shade()で色塗りをする。

・Letter()で文字を入れる。とりあえず焦点だけ入れてみました。

・drawtext()とFindarea() を使って,2つの閉曲線の面積を表示する。

以上のスクリプトを書きます。

その前後の設定も含めると,次のようになります。

--------------------------------------------------------------------------

Fhead="fig";

Ketinit();

A.xy=[-sqrt(5),0];

B.xy=[sqrt(5),0];

C.xy=[0,2];

Ptsize(3);

Pointdata("1",[A,B]);

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

Listplot([E,B,D]);

Listplot([G,B,F]);

Partcrv("1",D,E,"gp1elp");

Partcrv("2",F,G,"gp1elp");

Joincrvs("1",["sgEBD","part1"]);

Joincrvs("2",["sgGBF","part2"]);

Shade(["join1"],[0.2]);

Shade(["join2"],[0.2]);

Letter([B,"s2","F"]);

drawtext([0,3.5],Findarea("join1"));

drawtext([0,3],Findarea("join2"));

Setax(["a"]);

Addax(1);

Windispg();

Setunitlen("10mm");

--------------------------------------------------------------------------

これで作図はできあがり。

あとは,表示されている面積を見ながら4つの点をドラッグして,同じ面積になる位置にしたら,出力します。

出力は WritetoSci(2)で,できた Scilabのファイルを処理してTeXの図にします。

TeXから画像を作る TeX2img を使えば,ワープロなどにはりこめる 画像ファイルができます。

次の図はこうして作った PNG ファイルです。

軸を非表示にして,近日点付近,遠日点付近,その他の3つにしたのが次の図。

このページの下からCinderellaのファイルがダウンロードできます。

戻る