Обнаружение, находится ли точка внутри или снаружи формы Raphael.js - PullRequest
3 голосов
/ 17 апреля 2010

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

Чтобы сделать это более понятным, вот пример того, чего я не хочу, чтобы произошло:

Пример http://img682.imageshack.us/img682/4168/shapeh.png

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

Ответы [ 3 ]

4 голосов
/ 17 апреля 2010

Один из возможных способов определить, находится ли точка внутри замкнутого пути, таков:

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

Я не знаю, очень ли это вам поможет, так как я вообще не знаю raphael.js. Но это рабочий геометрический подход к проблеме.

3 голосов
/ 18 апреля 2010

Вы могли бы просто применить путь обрезки (который должен быть определен, чтобы быть серой формой, которую вы имеете в своем примере) к группе (<g> элемент), содержащей круги.

См. этот пример из w3c SVG testsuite о том, как использовать пути к клипам.

1 голос
/ 18 апреля 2010

Это выглядит очень похоже на " Тестирование SVG фигур? ".

Вам просто нужно вызвать getIntersectionList () для позиции круга и посмотреть, возвращает ли он большую серую форму.

...