2012-12-14 3 views
0

Как бы я мог проверить, существует ли треугольная поли в квадратной области? (I.E. изображает сетку квадратов, накладывающихся на группу из 2d полисов.)тест, если квадратные совпадения poly в C++ w/directx (необязательно)

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

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

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

+0

Чтобы проверить, если три присутствуют в квадрате, просто проверьте, находится ли какой-либо из его углов внутри квадрата. Вы можете сделать это, просто сравнив координаты углов квадрата с координатами tri. –

+0

@ Алгоморф, который не учитывал бы квадраты в центре большого треугольника – user980058

ответ

2

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

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

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

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

4

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

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

0

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

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

Can ho celadon city - vinhomes central park