VBA, чтобы проверить, находится ли объект внутри или вне области свободной формы - PullRequest
0 голосов
/ 24 октября 2019

Мне нужна помощь в этом: у меня есть область Freeform и формы в форме кругов, названных от A до G. Некоторые из этих точек находятся внутри области Freeform, а некоторые нет. Мне нужен макрос, который будет проверять каждую из этих точек - если эта точка находится внутри / снаружи области свободной формы. Как я могу получить результат в виде таблицы, где в столбце A указаны имена фигур (окружности-точки), а в столбце B результат (если точка находится внутри / снаружи произвольной формы). Спасибо Виктор

Изображение того, что мне нужно здесь: enter image description here

1 Ответ

0 голосов
/ 24 октября 2019

Есть несколько способов сделать это. Либо по расчету углов или путем создания луча через точку и найдите пересечения с полигонами. Если число четное, то внутри, если нечетное число снаружи. Эти алгоритмы - не такая уж тривиальная, а численная задача. Вот несколько ссылок (у них есть источник vb6 / vba)

Точка Пола Бурка внутри многоугольника

Точка VB-Helper внутри многоугольника

Если он не такой точный, вы можете нарисовать точки в графическом окне и определить цвет фона.

Чтобы найти больше Google для "точек внутри многоугольника":)

...