サイトアイコン CAD日記

クロソイドの限界

以前の記事で、こんなことを書いた。
> 試しに、簡単な曲線描画を行ってみようと思い、
> ここ数日あれやこれやと考えていたのだが、
> 一筋縄ではいかないことがわかった。
> らせん状にクルクル回っている感じを自分で
> 描画してみたかったのだが、なかなか。
どうしても頭から離れず、また何とかすべしという
義務感から再着手した。
下図のように、5回転半弱が限界だった。
[クリックすると高解像度の画像(1000×925)を表示]

2000点の頂点を持つ折線で表現したので、
かなり高精度だと思われる。
SXFにおけるクロソイド曲線情報

配置基点X座標 0
配置基点Y座標 0
パラメータ 100
向きフラグ
(0:反時計廻り 1:時計廻り)
0
回転角 0
開始曲線長 0
終了曲線長 815

もっと何重にも描こうとすると、ガチャガチャの線になる。
こんな感じに。

どうやら、階乗の配列値がdoubleの最大値に近づいていることに
起因しているようだ。
以下のように128個の値を計算しているのだが、
最後の値は、3.8562048236258025e+215 にもなる。
有効桁が16桁程度しかないことも関係あるかもしれない。
int i;
double k[128];
for( k[0]=1.0, i=1; j<128; i++ )
  k[i] = (i+1) * k[i-1];
このくらいで勘弁してやることにした。
もう十分だ。

モバイルバージョンを終了