Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: qwerky от Октябрь 29, 2009, 17:17



Название: определить пересечение полигонов
Отправлено: qwerky от Октябрь 29, 2009, 17:17
что возвратит QPolygon.intersected(polygon) если при пересечении получается несколько замкнутых полигонов ?


Название: Re: определить пересечение полигонов
Отправлено: Igors от Октябрь 29, 2009, 17:54
что возвратит QPolygon.intersected(polygon) если при пересечении получается несколько замкнутых полигонов ?
Ничего хорошего не возвратит. Такая ситуация возможна только если один из полигонов не конвексный (имеет внутренние углы > 180). Значит нужно разбить такие полигоны на 2 или более конвексных и затем искать пересечения.


Название: Re: определить пересечение полигонов
Отправлено: qwerky от Октябрь 29, 2009, 18:05
понятно.
обрабатываю введенный пользователем полигон. значит нужна дополнительная защита от дурака (нормализация полигона или еще что).


Название: Re: определить пересечение полигонов
Отправлено: Igors от Октябрь 29, 2009, 18:24
понятно.
обрабатываю введенный пользователем полигон. значит нужна дополнительная защита от дурака (нормализация полигона или еще что).
Человек захотел нарисовать "П" - почему он дурак и зачем от этого защищаться?  :) "Еще что" может отсутствовать и придется вспоминать геометрию.


Название: Re: определить пересечение полигонов
Отправлено: qwerky от Октябрь 31, 2009, 08:41
оставил только проверку на сложность (пересечение граней полигона), думаю этого будет достаточно.