« モノクロームな一日:12月27日 | トップページ | 梅が咲き始めました »

2014年1月17日 (金)

楕円を描く

★「卵が飛ぶまで考える」下村裕 著、日本経済新聞社、2013年8月22日刊
著者は「回転するゆで卵が立ち上がり、ジャンプするのはなぜか」という研究をなさった方です。
その本論はここでは解説しません。興味のある方はこの本とか、著者の他の著作などお読みください。
ここで、面白い話に出会ったのです。
  2点からの距離の、和、差、商、積が一定の場合どういう曲線が描けるか
という議論が載っていました。

2点からの距離の和が一定なら「楕円」、距離の差が一定なら「双曲線」
これはごく普通に知られています。

2点からの距離の比が一定だとどうなるでしょう?
これ、アポロニウスの円といいます。
ユークリッド幾何の初歩を学んだ私たちは、幾何の問題として
「2定点A,Bがあり、点PがAP:BPが一定であるように動くときの点Pの軌跡」
というような問題で解きました。
これが楕円や双曲線の定義と同じ形なのだとは気づいていませんでした。迂闊ですねぇ。

そして、積が一定だったらどんな曲線か?というのは考えたことがありませんでした。
そういう発想法があったのか。
楕円、双曲線の定義の仕方を一般化すれば当然出てくる問題ですねぇ。
面白そう!

★どうやって描画しようか?
方程式の形に整理して描くのが正攻法でしょうけど、見たこともない図形を描こうというのですから、概形だけでいいとしましょう。
それなら、定義通りに描いてしまえばいい。

結果の分かっている楕円についてBASICプログラムを書いてみました。
2点(-1, 0) と (1, 0) からの距離の和が wa であるような点を探して、あったらその点をプロットする、というプリミティブな考え方。
スキャンする範囲は  -5 < x < 5, -5 < y < 5
スキャンの間隔は  0.01
隙間のあるスキャンですから、条件にぴったり一致する点を外してしまう可能性も大きい。
ですから、誤差を e として、その範囲で一致すればいいと考えます。
言語はフリーソフトの「(仮称)十進BASIC ver. 7.6.1   2012.8.18」です。
--------------------
!Ellipse

LET Xmax = 5
LET Ymax = 5
SET WINDOW -Xmax,Xmax,-Ymax,Ymax
SET POINT STYLE 1
DRAW AXES

LET stp = 0.01
LET e = 0.005
LET c = 1
LET wa = 4

FOR x=-Xmax TO Xmax STEP stp
   FOR y=-Ymax TO Ymax STEP stp
      LET r1 = SQR((-x-c)*(-x-c) + y*y)
      LET r2 = SQR((x-c)*(x-c) + y*y)      
      LET s = r1 + r2
      IF ABS(s - wa) < e THEN
         PLOT POINTS :x, y
      END IF
   NEXT y
NEXT x

END
--------------------
wa = 4 で実行してみました。
Ellipses
なかなかいいですね。
(-2, 0) と (2, 0) をちゃんと通っています。
(0, √3) と (0, -√3) を通るはずですが、ほぼ正しいようです。
曲線がとぎれとぎれになるのは仕方ない。それはスキャンが粗いからです。
太くなるのも、誤差範囲内に複数の点が該当してしまうからです。
それはあらかじめ予想がつきました。

これなら知らない曲線でも、定義さえきちんとしていればその概形はわかる。
この方針で行こう!
続きは次回。

http://yamada-kuebiko.cocolog-nifty.com/blog/2014/01/post-0f37.html
2014年1月21日 (火)「カッシーニの卵形曲線(2点からの距離の積が一定)」
へ続く。

« モノクロームな一日:12月27日 | トップページ | 梅が咲き始めました »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« モノクロームな一日:12月27日 | トップページ | 梅が咲き始めました »

2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ