ケプラーの第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のファイルがダウンロードできます。
<戻る>