さて,始めよう.アルキメデスのコンパスが描く楕円の包絡線とコンパスの軸部の直線が描く包絡線が同じものであることを示すというのが課題だ.状況を具体的なアニメで示すことが一番分かり易いので,その方向に向かっている.⇒エラーが出ている.
▲WARNING:Couldn’t write to #<SB-SYS<FD-STREAM for “descriptor 744” {1003B33583}>:パイプを閉じています。
Trying new stream.WARNING:Couldn’t write to #<SB-SYS<FD-STREAM for “descriptor 724” {1004D235B3}>:パイプを閉じています。Trying new stream.
既存コードを流用しているだけなので,問題なく動くはずなのだが… else文を停めたら動き始めた.どうも,else文が実行されてしまっているようだ.構文的には間違っていないように見えるのだが…
この図で見ると楕円と楕円コンパス線はまったく接していないように燃える.楕円自体が星芒線の領域からはみ出している.楕円の描画が間違っているのだろうか?この楕円はparametric(d*cos(θ), (1-d)*sin(θ), θ, 0, 2*%pi)という式で描画している.長軸の半径を与えるdは定数で1.5だ.コンパスのペン先の同点を描画してみればすぐに分かる.「楕円コンパス5.wxm」がGIFなしの楕円コンパスだ.
ここでは,kを-1~2の間でコンパスの状態を描画している.kというのは,ペン先の位置を示すものと考えられる.ブルーの点がペン先で楕円はparametric(k*cos(θ), (1-k)*sin(θ), θ, 0, 2*%pi)で描画している.このkは上記のdに相当するから,一致している.どうもわからなくなってきた.下のアニメで見ると楕円とコンパス線は完全に交差していて,接するようなところは見られない.
これはどういうことか?おそらく,楕円の包絡線と直線の包絡線は形状的には類似しているが,スケールがまったく異なるのだろう.楕円の包絡線のアニメはまだ作っていなかったのではないだろうか?それをやって見る必要がある.楕円を描いているアニメは現在のところ2つある.一つはArchimedesCompass.gifで,もう一つはArchimes.gifだ.2つとも昨日のログに掲載している.前者は長径が0.5から2までをカバーしているが,後者は長径が0.5~1の場合しかカバーしていない.包絡線を見るにはある程度の本数を引かないと見えないので,前者からスタートするしかないのではないか?コンパスの軸を直線と交換し,重ね書きできるようにすればある程度見えるようになるのでなないだろうか?
やってみよう.