На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> Пересечение, объединение и разность многоугольников
    Такая ситуация не возможна, если у нас CD делится сплитером UK (почему UK, кстати? Ведь отрезок UF после деления сплиттером 0E должен распасться на два (UK и KF), и сплиттер UK должен попать в другую половину дерева, а здесь должен работать сплиттер KF), то положительные элементы после разделения сплиттером должны обрабатыватся дальше безымянным сплиттером F? (? - самая правая вершина на рисунке), точнее не им, а его половиной, которая образовалась, когда его на первом шаге рассек сплиттер 0E. А вот он уже классифицирует CH как лежащий внутри многоугольника.
    Проверь, похоже тут из дерева пропал сплиттер F?.

    Или покажи BSP-дерево для многоугольника EGUF... желательно, с подписанными буковками, а то набор чисел не воспринимается абсолютно.
      Спасибо ;)
      Цитата
      Проверь, похоже тут из дерева пропал сплиттер F?.

      Да, именно так. :yes: Его не было в BSP - я его выкидывала так как t1 = 0.003... а у меня стояла погрешность на 0.005!
      Правда все равно есть глюки:( Буду дальше разбираться, что не так делаю...:)
        может кто что нибудь сказать про тип данных vec2 ..какой файл для него надо подключать.?
          Цитата icetnt @
          может кто что нибудь сказать про тип данных vec2 ..какой файл для него надо подключать.?
          Никакой. Возьми и сам напиши реализацию <_<
            albom ясно значит просто обычная структура с 2мя полями как бе =)

            Добавлено
            хотя скорее класс.
              Именно так, просто точка на плоскости + пара вспомогательных функций.
                а может уважаемый albom подкинет листинг vec2 ?
                  При всем уважении, но я бы не советовал вам браться за эту задачу. Если вы даже пять строчек самостоятельно написать не можете, то и реализация vec2 вам не поможет :yes-sad:
                    Злой вы :D
                    проблема только в d1 ^ d2. Как называется эта операция над векторами?
                      Цитата VG54 @
                      d1 ^ d2. Как называется эта операция над векторами?
                      Векторрное произведение, вроде. Собственно, проверить легко, всё равно она тут только в одном месте затесалась, а именно взять уравнение прямой a+t*d, где a - точка на прямой, d - вектор, параллельный прямой, t - скаляр, взять аналогичное уравнение для второй, и решить :)

                      Цитата VG54 @
                      Злой вы
                      Увы, увы :yes-sad:
                        Цитата
                        Векторрное произведение

                        Если я правильно поняла, то d1 и d2 - направляющие вектора отрезков, для которых ищется точка пересечения. У коллинеарных векторов векторное произведение равно 0, и функция возвращает false.
                          Да, всё задумывалось именно так.
                            2albom
                            Совпадающие(в т.ч. частично) грани многоугольников алгоритм считает коллинеарными и выкидывает в положит. полуплоскость, т.е. в итоговых результатах (например в polygonIntersection) их не показывает. Это бага или фича?
                            Сообщение отредактировано: VG54 -
                              Как минимум, это неинтересное с точки зрения алгоритма обстоятельство. Если критично, поразбирай самостоятельно возможные случаи - это же просто техническая проблема.

                              Добавлено
                              Цитата VG54 @
                              Это бага или фича?
                              Фича. Посмотри на функцию split(), условие вполне ясно показывает, как в данном случае реализация себя ведет.
                                Скажите, пожалуйста, а если многоугольники касаются в одной точке или по стороне, подойдут ли для операции объединения/пересечения bsp-деревья?
                                И еще один вопрос (я не очень поняла) если одна из сторон многоугольника совпадает со сплиттером, то она в дерево уже не идет на данной этапе?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 2 [3]  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0394 ]   [ 14 queries used ]   [ Generated: 19.05.24, 13:09 GMT ]