Мне нужно решить относительно простую вещь - у меня n-вершинный выпуклый 2D-многоугольник и горизонтальная (!) Линия с некоторой координатой y. Мне нужно только одно: проверить, пересекается ли многоугольник с этой линией (то есть имеет 2 пересечения) или нет.
Самый быстрый способ, который я могу придумать, - это найти координаты min / max y внутри многоугольника (цикл повторяется n раз с двумя сравнениями и двумя хранилищами), а затем сравнить, если min y <= y <max y. </p>
Каким-то образом я чувствую, что это можно решить более "математически", но я всегда заканчиваю более медленным кодом (например, векторным способом - мне нужно вычислить различия для n [i] и n [i + 1], а затем умножить их, добавить и т. д. - намного медленнее, чем 2 cmps + store).