Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Создать октодерево(делить треугольник на квадраты и определять пересечения)
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Наташа Мартинчик Наташа Мартинчик вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.04.2015
По умолчанию Создать октодерево(делить треугольник на квадраты и определять пересечения) - 20.04.2015, 12:05

Создание октантного дерева. Диалоговое окно должно обеспечивать ввод уровня разбиения и возможность выбора многоугольника, для которого будет строиться октантное дерево. Октантное дерево – это структура данных, которая представляет собой плоское тело в виде рекурсивного подразделения двухмерного пространства на прямоугольные блоки (в нашей задаче квадраты).

Процедура построения октантного дерева. Сначала создаётся квадрат, в который многоугольник помещается целиком. Для этого находится максимальные и минимальные координаты по Х и по Y. Далее находится сторона квадрата и его центр. Этот квадрат называется корневым октантом. Затем корневой октант делится на 4 октанта, после чего анализируется их положение по отношению к многоугольнику. Если октант находится полностью внутри многоугольника, он считается «чёрным»; если снаружи – «белым». Если же октант частично лежит внутри многоугольника, а частично – снаружи, то он считается «серым» и делится на четыре октанта меньшего размера. Чёрные и белые октанты дальше не делятся. Процедура продолжается до тех пор, пока не будет достигнут заданный уровень разбиения. «Цвет» определяется следующим образом: проверяется, пересекаются ли стороны октанта со сторонами многоугольника (с помощью функции AutoLisp inters). Если стороны октанта пересекаются со сторонами многоугольника, то октант считается «серым». Иначе октант лежит внутри либо снаружи многоугольника. Чтобы определить его «цвет» подсчитывается количество пересечений отрезка лежащего между центром октанта и одной из вершин корневого октанта со сторонами многоугольника. Если количество пересечений чётное или ноль, то квадрат лежит снаружи многоугольника и считается «белым». Иначе если количество пересечений нечётное, то он лежит внутри многоугольника и считается «чёрным». На чертеже рисуются только октанты внутри треугольника



Помогите пожалуйста реализовать.
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski на форуме
Любитель давать советы
 
Сообщений: 4,266
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 20.04.2015, 17:32

Вообще-то, октанты - это в трехмерном пространстве. Там их восемь А в двумерном - квадранты. Их же всего четыре, сами пишете.
Ответить с цитированием
  (#3 (permalink)) Старый
Наташа Мартинчик Наташа Мартинчик вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.04.2015
По умолчанию 21.04.2015, 14:02

ieoiaedhaai.jpg
вот как это должно выглядеть
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно ли делить жесткий диск на 2 терабайта если система стоит на ssd??? arsentevsergey Любые вопросы от новичков 3 22.09.2014 12:49
Делить диск 1974leon Windows 7 9 26.06.2013 12:27
Непонятные квадраты появились frender Видеосистема 12 23.04.2012 09:20
Проблема с дисплеем, во время работы появляются квадраты, артефакты. Ronin Техническая поддержка 11 01.11.2011 14:58
Черные квадраты по экрану. Бари Видеокарты 18 09.07.2011 10:31
На дисплее появились мерцающие квадраты после переустановки ОС. юлия-111 Техническая поддержка 36 31.03.2011 01:41
Зеленые квадраты, видео карта px7900 gs kamar Видеокарты 2 25.08.2010 10:40
Делить на разделы, или не делить? Spartaker Накопители 17 26.05.2010 15:39
Создать класс Прямоугольный треугольник Кристиночка Вопросы начинающих программистов 35 26.01.2006 19:36
Как создать класс треугольник вычисляющий площадь треугольника koc-roma Вопросы начинающих программистов 3 01.06.2005 22:13
Как создать треугольник Паскаля, где количество строк вводится пользователем fonda Вопросы начинающих программистов 1 13.04.2005 20:44
Определение пересечения прямоугольников Garik Алгоритмы 9 03.06.2003 00:56



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов