0

楕円と直線の交点を計算するのに問題があります。

ポイント (0/0) に半径 500 の楕円があるとします。さらに、ポイント (0/0) から ( mouseX, mouseY) まで線を引いています。

最初に、マウス座標が楕円の外側にあるかどうかを確認します

if((mouseX*mouseX)+(mouseY*mouseY)) > 500*500){/*...*/}

さて、マウス座標がその楕円の外にあるときはいつでも、マウスまでではなく、楕円の「境界」まで線を描きたいと思います。そのためには、直線と楕円の交点が必要です。

このような三角関数のタスクを簡素化するライブラリはありますか? 交差を計算する多かれ少なかれ簡単な方法は他にありますか?

4

1 に答える 1

2

あなたが言ったことから、私は次の仮定を立てています:

  • 楕円は常に円形です (すべて同じ半径です)。
  • 線は常に円の中心から引かれます。

それが本当なら、問題は実際には非常に単純です。線の長さが円の半径と同じになるように線を切り詰めるだけで、交点が得られます。

マウスが楕円の外にある場合:

  1. 線を表すベクトルを格納します。この場合 (mouseX、mouseY)。
  2. ベクトルを正規化します (各成分を線の長さで割ります)。
  3. ベクトルに円の半径を掛けます。

ベクトルには、円の中心に対する交点が含まれるようになりました。

これにはベクトル クラスを使用する必要はありませんが、役立つ場合があります。

円と線が原点 (0,0) から始まらない場合は、補正する必要があります。ステップ 1 で、(mouseX,mouseY) から新しい原点を引きます。手順 3 の後、原点を追加して表示座標を取得します。

于 2013-10-30T16:40:27.060 に答える