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