Есть
большая область (полигон, 1000+- точек)
сложной формы (как выпуклой, так и "впуклой") и
массив точек (10-30). Для каждой точки требуется проверить её вхождение в полигон.
Реализация на PHP и, возможно, JS.
Алгоритмы я нашла ни один и ни два, но то просто алгоритмы без сравнения скорости, а чтобы провести собственные тесты, придётся каждый реализовать, что не то, чтобы быстро.
Может кто знает какой алгоритм лучше всего подойдёт для этих целей? Или же может есть альтернативные варианты реализации следующей затеи?
Описание затеи
Проект: игра.
Есть клиент (веб-страничка) и сервер (PHP). На клиенте карта с возможностью мышью рисовать маршрут движения (думаю сделать расстояние между двумя точками фиксированное, к примеру, 10 у.е.). На клиенте определить вхождение точки в область можно банально использовав SVG с полигоном нужной формы, но если алгоритм будет хорош, можно всё и на canvas сделать. На клиенте будет несколько областей, а на сервер будет отправляться точки и в какой области каждая точка.
Так вот, клиенту, естественно, верить нельзя, поэтому необходимо провалидировать каждую точку, а чтобы не проверять в какой именно области находится точка, я решила проверять находится ли точка в указанной области и если нет, то весь массив отбрасывать, как невалидный.
Валидация потребует в любом случае много ресурсов сервера, однако хотелось бы их снизить до минимума, поэтому и решила узнать, может кто знает что лучше делать в данной ситуации.