そろそろ軌跡モードを作ろうと思う。(9月19日)
基本的な線は
parametriccurve o1=Orbit(A,a,B);
Aは直線a上を動くものとし、そのときの点Bの軌跡。
またはaは円でもよい。
parametriccurve o1=Orbit(A,a,B);
Aは直線a上を動くものとし、そのときの点Bの軌跡。
またはaは円でもよい。
方法としては、Aを直線(円)上で動かしてみて、その時のBの座標をためておいて、parametriccuveとして定義する。
その前に、parametricgraphの作りを決めなければいけないが。(9月19日)あはら
その前に、parametricgraphの作りを決めなければいけないが。(9月19日)あはら
ベタな方法だが、GParaCurveクラスに、
double orbitx[200]; double orbity[200]; int orbit_len;
を作って、ここに随時点列を書き込んでおく。ほかのデータ構造や新しく点列のクラスを作ることも考えたが、点を動かすと軌跡も変わり、それにしたがって、軌跡をプロットする点の個数も変化することを考えれば、このようなベタなやり方が結局うまくいくような気がするのだ。
(9月20日)あはら
(9月20日)あはら
一応、点をできるだけ等間隔にプロットし、画面からはみ出たら適度に飛ばし、というアルゴリズムをGConst::Evaluateに搭載。割とうまくいっている。
(9月26日)
(9月26日)
あとは、軌跡を追っていって、もし複素数に沈んでしまったら、もうひとつの枝を見つけ出し、そこを逆流するアルゴリズムを作るくらいか。(9月27日)