Для полноты я хочу сделать пару замечаний здесь:
Начиная с API 19, существует операция пересечения для путей. Вы можете создать очень маленький квадратный путь вокруг вашей контрольной точки, пересечь его с путем и посмотреть, является ли результат пустым или нет.
Вы можете преобразовать пути в регионы и выполнить операцию contains () . Однако регионы работают в целочисленных координатах, и я думаю, что они используют преобразованные (пиксельные) координаты, поэтому вам придется работать с этим. Я также подозреваю, что процесс преобразования требует больших вычислительных ресурсов.
Алгоритм пересечения ребер, который опубликовал Ганс, хорош и быстр, но вы должны быть очень осторожны в определенных угловых случаях, например, когда луч проходит непосредственно через вершину или пересекает горизонтальное ребро, или когда ошибка округления это проблема, которая всегда есть.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * '*' * '' '' '' '' '' '' '' '' '' '' в значительной степени ''] не требует больших усилий;
Эта статья Дэна Сандея дает гибридный алгоритм, который так же точен, как число обмоток, но так же прост в вычислительном отношении, как и алгоритм приведения лучей. Это поразило меня, как это было элегантно.
См. https://stackoverflow.com/a/33974251/338479 моего кода, который будет выполнять вычисление точки на пути для пути, состоящего из отрезков, дуг и окружностей.