Рассчитать точку и столкновение отрезка круга - PullRequest
2 голосов
/ 15 сентября 2010

Если я вычислил точку пересечения между отрезком и окружностью, как я могу определить, лежит ли эта точка пересечения на отрезке окружности?

У меня есть уравнения, чтобы определить, пересекается ли отрезок линии с окружностью, и у меня также есть точка пересечения на этой окружности, но мне нужно знать, является ли эта точка столкновения на окружностилежит в пределах определенного сегмента arg этого круга.У меня есть конечные точки сегмента дуги, центр круга и его радиус, а также точка столкновения.

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Преобразуйте точку пересечения в полярные координаты вокруг центра и сравните углы.

0 голосов
/ 15 сентября 2010

В качестве альтернативы идее Дарио (которая также должна работать) вы можете:

  1. Рассчитать расстояния между точкой пересечения и конечными точками дуги (именуемой intdist1 иintdist2).
  2. Рассчитать расстояние между конечными точками дуги (arcdist).
  3. Если дуга меньше половины окружности (покрывает менее 180 градусов), то вы знаете, находится ли точка в дуге, если intdist1 и intdist2 меньше arcdist.
  4. В противном случае, если дуга больше половины окружности (охватывает более 180 градусов), то вы знаете, находится ли точка в дуге, если intdist1 или intdist2 больше arcdist,

Полагаю, поскольку вы не указали иное, дуга между конечными точками проходит короткую дорогу.В этом случае вам не нужно беспокоиться о вышеописанном шаге 4.

Метод не работает, хотя, если вы используете дугу, которая охватывает ровно 180 градусов окружности.В этом случае вы могли бы разбить дугу 180 градусов на дуги 90 градусов и проверить их обе, я полагаю.

Кроме того, вы, конечно, можете использовать квадрат расстояния для сравнения этих расстояний, чтобы сохранить себя в квадрате.корень.Кроме того, этот метод должен быть быстрее, чем вычисление углов, потому что они предполагают использование дорогих обратных косинусов.

...