Определить, находится ли точка внутри определенной геометрической области - PullRequest
3 голосов
/ 24 февраля 2010

Изобразите круг. Теперь разделите круг по вертикали и горизонтали на четыре области. Возьмите верхнюю левую область. Если вы нарисуете вокруг нее рамку, у вас будет коробка с закругленным углом, ведущая на восток.

Учитывая координаты X и Y в этом поле этой единственной верхней левой области, как я могу определить, находится ли точка слева от линии круга или справа?

Ответы [ 5 ]

5 голосов
/ 24 февраля 2010

Вы можете решить проблему, поняв:

  • центр круга - юго-восточный угол рамки
  • круг содержит все точки в радиусе r этой точки

Таким образом, вы можете решить эту проблему, учитывая центр круга в (a,b) и зная размеры квадратной коробки со стороной r ... любая заданная точка (x,y) внутри коробки также находится внутри круга если и только если:

((b-y)^2 + (a-x)^2) < r^2

Такая точка находится вне или точно на окружности, если и только если это условие ложно.

Как отмечает Дерек Э. в комментарии, при реализации этого решения лучше сравнивать квадрат расстояния, чтобы избежать приближений функции sqrt.

4 голосов
/ 24 февраля 2010

Я был смущен после линии "нарисовать коробку".

Я визуализировал ваш пост как

;  ______________
; |      _  -    |
; |    .         |
; |  *           | [Ascii art win]
; | .            |
; |              |
; |:             |
; |______________|
;

Что вы подразумеваете под закругленным углом на восток? Я проигнорирую эту строку и попытаюсь продолжить ...

Если у вас есть точка внутри круга, и вы хотите увидеть, находится ли ваш x / y в пределах границ, вы можете просто использовать теорему Пифагора и проверить, меньше или меньше гипотенуза вашего треугольника радиус круга

Assume r = radius of your circle.
mouse positions are relative to center of circle
if(Math.Sqrt(mx^2+my^2) <= r); //in circle
else; //outside circle
2 голосов
/ 24 февраля 2010

Найдите расстояние от центра круга (нижний правый угол поля). Если расстояние больше радиуса круга (равного размеру ребра прямоугольника), точка находится за пределами круга.

0 голосов
/ 24 февраля 2010

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

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

тогда ваш вопрос просто звучит так: «Как мне узнать, находится ли точка в круге или нет?»

Я не думаю, что на самом деле есть другой способ решить эту проблему:

проверьте, находится ли точка в поле, затем проверьте, находится ли она в круге (или наоборот ...)

- точка в круге достаточно проста, и на нее уже несколько раз отвечали.

0 голосов
/ 24 февраля 2010

Теорема Пифагора. Возьмите dx и dy как разницу между точкой и местоположением точки в правом нижнем углу поля. Возьмите квадратный корень из суммы квадратов этих значений. Точка находится внутри круга, если это значение меньше высоты (или ширины) поля.

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