Принадлежность точки дуге
У меня есть окружность, известен радиус как R, известен центр окружности(xc, yc).
Я рисую два вектора с центра к краю окружности. Как узнать, точка с координатами (x,y) находится между векторами или нет
Ответы (2 шт):
Определить углы радиусов, угол радиуса к точке и убедиться, что этот угол там, где надо угол :)
Основной вопрос - любая точка на окружности в принципе на этой дуге... Только одна дуга (на рисунке) - сверху, вторая - снизу :) Тут уж решайте сами, принадлежность какой дуге нужна...
Update
С учетом изменения условия в комментариях - находите угол между векторами (x-x0,y-y0) и (x1-x0,y1-y0) - из центра к вашей точке и к точке (x1,y1) - например, вычисляя скалярное произведение - и смотрите, меньше ли он указанного вами раствора (последнее ваше значение - 45 градусов).
Если меньше - попадает, если больше - нет...
Собственно, вот:
Или даже
Только тут неплохо бы убедиться, что расстояния от точек до центра и правда равны радиусу...
Данный подход не использует тригонометрических функций и вообще углов, только векторная алгебра.
Задача так толком и не поставлена, но будем считать, что размер сектора не превышает Pi.
Векторы X1, X2 и A - из центра к первой точке, ко второй, и к точке a
x1 = p1.x - xc
y1 = p1.y - yc
x2 = p2.x - xc
y2 = p2.y - yc
xa = a.x - xc
ya = a.y - yc
Тогда посчитаем знаки (-1; 0; +1) косых произведений векторов X1 x X2, X1 x A, A x X2.
s12 = sign(x1*y2 - y1*x2)
s1a = sign(x1*ya - y1*xa)
sa2 = sign(xa*y2 - ya*x2)
Если все три знака совпадают (или среди них есть нули), то точка А находится в секторе X1X2 независимо от взаимной ориентации X1 и X2



