2

重複の可能性:
円線の衝突検出

私は問題があります。ポイントAを見つける必要があります。 ここに画像の説明を入力してください

どうすればこれを最善の方法で行うことができますか?

プログラミング言語はJavaです。

4

1 に答える 1

4

与えられたもの:中心がC = [x2、y2]で半径がRの円は、CからB = [x1、y2]までの線分で交点を計算します。

端点の1つが円の中心であるため、これは簡単です。CからBに向かってRの距離を歩く必要があります。距離は円に到達することを保証し、方向は光線C->Bに到達することを保証します。交差点がセグメント上にあるかどうかを確認する必要があります。

ベクトルライブラリがある場合の擬似コードは次のとおりです

- offset = B-C
- if length_square(offset) < R^2 output "no intersection"
- offset_a = normalize(B-C) * R
- output C + offset_a

ライブラリがないと、コードは長くなります。

- off_x = x1-x2;
- off_y = y1-y2;

- ls = off_x*off_x + off_y*off_y
- if ls < R*R
-- return an empty array, meaning "no intersections"

- scale = R / sqrt(ls)
- res_x = off_x * scale + x2
- res_y = off_y * scale + y2
- return [[off_x, off_y]]
于 2012-10-21T20:46:54.753 に答える