Чтобы выяснить, находится ли точка, P
, внутри полукруга, я бы рассмотрел тест из двух частей:
- Находится ли
P
в радиусе R
от центра C
?
- Находится ли
P
в правильной (т.е. занятой) полуплоскости?
Часть (1) проста: сравните (P_x-C_x)^2 + (P_y-C_y)^2
(в 2d, конечно, добавьте направление Z в 3d) с R^2
(не беспокойтесь о квадратных корнях, они требуют времени и добавить что-нибудь).
Часть (2) почти такая же простая: определите вектор b = B - C
, который делит пополам полукруг, указывающий на занятую полуплоскость. Затем вычислите вектор v = P - C
и возьмите скалярное произведение с b
. Если результат положительный, точка находится на занятой полуплоскости, если отрицательная, точка находится на незанятой половине места, а если 0, точка попадает на разделительную линию. Точечный продукт в 2d, как обычно, v*b = v_x*b_x + v_y*b_y
.