2010-09-14 3 views
2

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

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

+0

Попробуйте также http://math.stackexchange.com. – kennytm

ответ

1

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

+0

У меня нет никаких углов. Единственные данные, которые мне даны, это две конечные точки дуги. –

+0

@Scienceprodigy вы можете найти углы, используя центральную точку круга и точки дуги. Вы захотите выбрать опорную ось для углов (обычно по оси x) и выбрать такие вещи, как увеличение или уменьшение угла против часовой стрелки или по часовой стрелке. –

0

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

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

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

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

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

Смежные вопросы