Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.10.33] |
|
Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Такая ситуация не возможна, если у нас CD делится сплитером UK (почему UK, кстати? Ведь отрезок UF после деления сплиттером 0E должен распасться на два (UK и KF), и сплиттер UK должен попать в другую половину дерева, а здесь должен работать сплиттер KF), то положительные элементы после разделения сплиттером должны обрабатыватся дальше безымянным сплиттером F? (? - самая правая вершина на рисунке), точнее не им, а его половиной, которая образовалась, когда его на первом шаге рассек сплиттер 0E. А вот он уже классифицирует CH как лежащий внутри многоугольника.
Проверь, похоже тут из дерева пропал сплиттер F?. Или покажи BSP-дерево для многоугольника EGUF... желательно, с подписанными буковками, а то набор чисел не воспринимается абсолютно. |
Сообщ.
#32
,
|
|
|
Спасибо
Цитата Проверь, похоже тут из дерева пропал сплиттер F?. Да, именно так. Его не было в BSP - я его выкидывала так как t1 = 0.003... а у меня стояла погрешность на 0.005! Правда все равно есть глюки:( Буду дальше разбираться, что не так делаю... |
Сообщ.
#33
,
|
|
|
может кто что нибудь сказать про тип данных vec2 ..какой файл для него надо подключать.?
|
Сообщ.
#34
,
|
|
|
Цитата icetnt @ Никакой. Возьми и сам напиши реализацию может кто что нибудь сказать про тип данных vec2 ..какой файл для него надо подключать.? |
Сообщ.
#35
,
|
|
|
albom ясно значит просто обычная структура с 2мя полями как бе =)
Добавлено хотя скорее класс. |
Сообщ.
#36
,
|
|
|
Именно так, просто точка на плоскости + пара вспомогательных функций.
|
Сообщ.
#37
,
|
|
|
а может уважаемый albom подкинет листинг vec2 ?
|
Сообщ.
#38
,
|
|
|
При всем уважении, но я бы не советовал вам браться за эту задачу. Если вы даже пять строчек самостоятельно написать не можете, то и реализация vec2 вам не поможет
|
Сообщ.
#39
,
|
|
|
Злой вы
проблема только в d1 ^ d2. Как называется эта операция над векторами? |
Сообщ.
#40
,
|
|
|
Цитата VG54 @ Векторрное произведение, вроде. Собственно, проверить легко, всё равно она тут только в одном месте затесалась, а именно взять уравнение прямой a+t*d, где a - точка на прямой, d - вектор, параллельный прямой, t - скаляр, взять аналогичное уравнение для второй, и решить d1 ^ d2. Как называется эта операция над векторами? Цитата VG54 @ Увы, увы Злой вы |
Сообщ.
#41
,
|
|
|
Цитата Векторрное произведение Если я правильно поняла, то d1 и d2 - направляющие вектора отрезков, для которых ищется точка пересечения. У коллинеарных векторов векторное произведение равно 0, и функция возвращает false. |
Сообщ.
#42
,
|
|
|
Да, всё задумывалось именно так.
|
Сообщ.
#43
,
|
|
|
2albom
Совпадающие(в т.ч. частично) грани многоугольников алгоритм считает коллинеарными и выкидывает в положит. полуплоскость, т.е. в итоговых результатах (например в polygonIntersection) их не показывает. Это бага или фича? |
Сообщ.
#44
,
|
|
|
Как минимум, это неинтересное с точки зрения алгоритма обстоятельство. Если критично, поразбирай самостоятельно возможные случаи - это же просто техническая проблема.
Добавлено Цитата VG54 @ Фича. Посмотри на функцию split(), условие вполне ясно показывает, как в данном случае реализация себя ведет. Это бага или фича? |
Сообщ.
#45
,
|
|
|
Скажите, пожалуйста, а если многоугольники касаются в одной точке или по стороне, подойдут ли для операции объединения/пересечения bsp-деревья?
И еще один вопрос (я не очень поняла) если одна из сторон многоугольника совпадает со сплиттером, то она в дерево уже не идет на данной этапе? |