dポイントプレゼントキャンペーン実施中!

同じカテゴリに度々すみません。
線分と楕円の交差する条件判定も
必要になってしまいました。(最後です)

楕円のデータとしては矩形でもっていて
(px1,py1)-(px2,py2)の長方形の中に収まる楕円です。
その値を(cx - x)^2 / a + (cy - y)^2 / b = 1
へ変換し
http://oshiete1.goo.ne.jp/kotaeru.php3?q=673382
の回答を参考にして内部に線分の端点がある場合の判定はできました。
しかし先端の間に楕円がきた場合はお手上げ状態です。
線分と楕円が交差する条件についてご教授ください。

A 回答 (3件)

No.1です。



> d=abs((ay2-ay1) *x1+(ax1-ax2)*y1+(ay1*ax2-ax1*ay2 ))/sqrt((ay2-ay1) ^2+(ax1-ax2)^2)・・・(1)
>  (ax2-ax1)(x1-ax1)+(ay2-ay1)(y1-ay1)>0・・・(2)
>  (ax1-ax2)(x1-ax2)+(ay1-ay2)(y1-ay2)>0・・・(3)
> この 3式の
> x1をx1 / |px2-px1|
> y1をy1 / |py2-py1|
> に置き換えたので宜しいのでしょうか?

それでいいと思います。

他のやり方としては、線分の方程式はtを媒介変数として
x=(ax2-ax1)t+ax1, y(ay2-ay1)t+ay1 (0≦t≦1)
と表せますから、これを楕円の方程式に代入して、
tの解が0から1の範囲にあるかどうかを調べる手もあります。
    • good
    • 0
この回答へのお礼

結局現在は、判別式と解の公式を利用しています。
後でranxさんの方法でのやってみたいと思います。
再度のご回答ありがとうございました。

お礼日時:2003/10/09 12:27

既に気づいているかもしれませんが円の問題で間違った回答をしていたのであれで解いてはいけません。


あれは少なくても1つの端点が円内部に有る場合です。
両方とも外にある場合を想定してませんでした。
補足に回答の方法で解いてみると書いてありましたが間違いなのでしないでください。
無視してください。
楕円も1と同じようにできると思います。

この回答への補足

とりあえず・・・
(x1 - x)^2 / a^2 + (y1 - y)^2 / b^2 = 1
の楕円の式に
接線の直線の式y = mx + b
をあてはめ、
判別式から解をもつか判定
解を持つなら
交点を求めて、その座標が線分の範囲内にあるかで
判定しようかと思います。
(果たして可能だろうか、、)

補足日時:2003/10/08 13:48
    • good
    • 0
この回答へのお礼

わざわざのご指摘有難うございます。
端点(x,y)が含まれるかどうかは
(x - x1)^2 / a^2 + (y - y1)^2 / b^2 <= 1
で判定しているのですが、
両方とも外にある場合がどのようにすればよいのかが、わかりません。

お礼日時:2003/10/08 09:57

Y座標を|px2-px1|/|py2-py1|倍すると円になります。


この座標変換を行っても、直線は直線のままですし、
交わるかどうかということも保存されます。
    • good
    • 1
この回答へのお礼

いつもご回答有難うございます。
つまり
d=abs((ay2-ay1) *x1+(ax1-ax2)*y1+(ay1*ax2-ax1*ay2 ))/sqrt((ay2-ay1) ^2+(ax1-ax2)^2)・・・(1)
 (ax2-ax1)(x1-ax1)+(ay2-ay1)(y1-ay1)>0・・・(2)
 (ax1-ax2)(x1-ax2)+(ay1-ay2)(y1-ay2)>0・・・(3)
この 3式の
x1をx1 / |px2-px1|
y1をy1 / |py2-py1|
に置き換えたので宜しいのでしょうか?

お礼日時:2003/10/08 09:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!