В качестве альтернативы идее Дарио (которая также должна работать) вы можете:
- Рассчитать расстояния между точкой пересечения и конечными точками дуги (именуемой
intdist1
иintdist2
). - Рассчитать расстояние между конечными точками дуги (
arcdist
). - Если дуга меньше половины окружности (покрывает менее 180 градусов), то вы знаете, находится ли точка в дуге, если
intdist1
и intdist2
меньше arcdist
. - В противном случае, если дуга больше половины окружности (охватывает более 180 градусов), то вы знаете, находится ли точка в дуге, если
intdist1
или intdist2
больше arcdist
,
Полагаю, поскольку вы не указали иное, дуга между конечными точками проходит короткую дорогу.В этом случае вам не нужно беспокоиться о вышеописанном шаге 4.
Метод не работает, хотя, если вы используете дугу, которая охватывает ровно 180 градусов окружности.В этом случае вы могли бы разбить дугу 180 градусов на дуги 90 градусов и проверить их обе, я полагаю.
Кроме того, вы, конечно, можете использовать квадрат расстояния для сравнения этих расстояний, чтобы сохранить себя в квадрате.корень.Кроме того, этот метод должен быть быстрее, чем вычисление углов, потому что они предполагают использование дорогих обратных косинусов.