Я занимаюсь разработкой приложения для Mac OS X, которое, как часть его пользовательского интерфейса, будет отображать множество визуальных элементов в своем основном виде, которые можно выбрать. Эти элементы могут быть расположены в любом месте в представлении. Пользовательский интерфейс будет поддерживать различные способы выбора элементов: выделение прямоугольной области, выделение эллиптической области и «свободное» выделение лассо.
У меня уже есть выбор прямоугольной и эллиптической области выделения. Алгоритм довольно прост; элемент считается «выбранным», если область элемента пересекается с областью прямоугольника / эллипса.
Выбор лассо будет работать так же, как и в современных приложениях для обработки изображений, таких как Photoshop; пользователь может щелкнуть и перетащить путь, который закроется сам, и элементы, содержащиеся в нарисованном пути, будут выбраны.
Этот алгоритм, вероятно, будет гораздо более сложным, чем прямоугольное / эллиптическое выделение, поскольку форма выделения не ограничена. Мне интересно, есть ли у кого-нибудь опыт написания чего-то подобного или вы можете указать мне правильное направление относительно того, какие методы программирования необходимы и как наиболее эффективно работает этот алгоритм.
Заранее спасибо.