円と直線の交点を求めるには…
円と直線の交点の座標を求めるためにウロウロ検索しておりましたところ、ちょうど求めたいサンプルプログラム(C言語)を載せているサイトがありました。
幾何計算 % C言語ライブラリー
しめしめこいつはいただきだぜ!と思ったのですが、その中で一点だけ困った点が。
円と直線の交点を求めるlncl関数にて
if(fgsq < accy){ return (3); }else{ …
という記述があります。説明によるとlncl関数の戻り値は、『成功すると交点の数、交点が存在しないと-1を返します。』とあります。
交点が3つというのはなんだろう?
円と直線の交点は最大で二つまでになるはずですが、ソースを見て変数fgsqが何を意味しているか私の知識では理解できないので、これはどうしたらいいものか。返す交点の座標を設定する前に関数を終了させているので-1(エラー)の間違いですかなあ。
このページには二直線の交点の計算プログラムもあり、オーバーフローを防ぐための仕組みもあるようなので、以前私が作ったものよりこちらを使ったほうがよさそうですね。でも精度パラメータのaccyの値はどれくらいに設定したらいいのだろうか。
C言語によるサンプルなので、はてさて上手くASに移植できるかどうか。