проверить, перекрывает ли квадрат poly в c ++ с directx (необязательно)

как бы я проверил, чтобы увидеть, присутствует ли треугольный полигон в квадратной области? (I.E. изобразите сетку квадратов, перекрывающих группу 2d полисов.)

Или даже лучше, как я могу определить процентную долю одного из этих квадратов, которая занята данным поли (если вообще).

Я использовал DirectX раньше, но не могу найти правильную комбинацию функций в их документации. — Хотя кажется, что что-то с трассировкой лучей может быть уместным.

Я использую C ++ и могу использовать DirectX, если это полезно.
Спасибо за любые предложения или идеи. 🙂

0

Решение

Вы могли бы рассмотреть клипер библиотека для выполнения двухмерных обрезок многоугольников, вычисления площади, тестирования пересечений и т. д. Она достаточно компактна, с ней легко иметь дело, и в ней есть примеры того, как ее использовать.

Это реализация алгоритма отсечения Vatti, которая будет обрабатывать множество нечетных случаев (которые могут оказаться для вас излишними)

4

Другие решения

Есть несколько способов сделать это, и это, по сути, проблема отсечения.

Одним из способов является использование алгоритма Коэна – Сазерленда: http://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland

Вы должны запустить алгоритм 3 раза (один раз для каждого края треугольника).

Затем вы можете найти процент площади, занятой вычислением площади (clipped_triangle) / area (square_region).

2

Вы могли бы рассмотреть библиотеку clipper для выполнения общего обрезания 2D-полигонов, вычисления площади, тестирования пересечений и т. Д. Она довольно компактна и проста в обращении, а также имеет приличные примеры ее использования.

Это реализация алгоритма отсечения Vatti, которая будет обрабатывать множество нечетных случаев (которые могут оказаться для вас излишними)

Кан Хо Селадон СитиВинхомес Центральный парк

0
По вопросам рекламы [email protected]