Проверьте, принадлежит ли точка области, ограниченной кривой Безье, используя GDI

Я хочу проверить, находится ли указанная координата внутри области, ограниченной кривой Безье. Есть ли конкретная функция в GDI, которую я могу использовать? Если нет, как я могу сделать это вручную? Моя кривая Безье задается своими точками.

1 ответ

Решение

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

BeginPath
draw enclosed path with PolyBezier and other functions
EndPath
PathToRegion
PtInRegion

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

Другие вопросы по тегам