как бы я проверил, чтобы увидеть, присутствует ли треугольный полигон в квадратной области? (I.E. изобразите сетку квадратов, перекрывающих группу 2d полисов.)
Или даже лучше, как я могу определить процентную долю одного из этих квадратов, которая занята данным поли (если вообще).
Я использовал DirectX раньше, но не могу найти правильную комбинацию функций в их документации. — Хотя кажется, что что-то с трассировкой лучей может быть уместным.
Я использую C ++ и могу использовать DirectX, если это полезно.
Спасибо за любые предложения или идеи. 🙂
Вы могли бы рассмотреть клипер библиотека для выполнения двухмерных обрезок многоугольников, вычисления площади, тестирования пересечений и т. д. Она достаточно компактна, с ней легко иметь дело, и в ней есть примеры того, как ее использовать.
Это реализация алгоритма отсечения Vatti, которая будет обрабатывать множество нечетных случаев (которые могут оказаться для вас излишними)
Есть несколько способов сделать это, и это, по сути, проблема отсечения.
Одним из способов является использование алгоритма Коэна – Сазерленда: http://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland
Вы должны запустить алгоритм 3 раза (один раз для каждого края треугольника).
Затем вы можете найти процент площади, занятой вычислением площади (clipped_triangle) / area (square_region).
Вы могли бы рассмотреть библиотеку clipper для выполнения общего обрезания 2D-полигонов, вычисления площади, тестирования пересечений и т. Д. Она довольно компактна и проста в обращении, а также имеет приличные примеры ее использования.
Это реализация алгоритма отсечения Vatti, которая будет обрабатывать множество нечетных случаев (которые могут оказаться для вас излишними)