点線で楕円を描く・その2
[追記] この記事には誤りが含まれています。訂正した記事はこちらです。
昨日の記事の続きです。
昨日は計算式までは出したのですが、実際に計算せずにはいられなかったのでやってみました。
Numpy とかあるのは知ってるのですが、標準の Python だけでどこまでできるかやってみました。
描画は gnuplot 使ってやってます。
ソースコード
ちゃちゃっと書いたので、コメントとかは省いてます。
import sys import math def delta(phi, du, k2): return phi + du / math.sqrt(1 - k2 * math.sin(phi)**2) def draw(argv=None): if not argv: argv = sys.argv filename = argv[1] a = float(argv[2]) b = float(argv[3]) du = float(argv[4]) k2 = 1 - (b/a)**2 phi = 0 with open(filename, 'w') as out_file: print >> out_file, '#x\ty' i = 0 while phi <= 2 * math.pi: i += 1 i %= 10 if i < 5: print >> out_file, '{0}\t{1}'.format(a * math.cos(phi), b * math.sin(phi)) else: print >> out_file, '' phi = delta(phi, du, k2) if __name__ == '__main__': draw(sys.argv)
コマンド
$ python ellipse.py ellipse.dat 1.0 0.5 0.01
gnuplot> plot "ellipse.dat" w l
あとがき
思ったより誤差が発散しなかったので楽でした。
今日ばっかりは俺ってすげーって思いました :P
それでは。