Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 28
Текст из файла (страница 28)
Вокселы часто используются в качестве внешнего представления, повышакпцего эффективность вычислений. данных для хранения октантного дерева Листинг 5.2. Структура зсгнст оссгеегсос Е1оат Поас зсгцст пстгее зсгцсс остгее спаг 5сгцст оссГсе х /* границы пространства */ (* корень дерева */ ХГПП УППП 7О П ХПЯХ, Уидх, 7ПВХ; *грот. сопл; /* цвет антанта: ВЕАСК, АННЕ. ВДЕУ */ "ест[8): (* указатели на антанты */ /* отличны от нуля.
если сесе=-ВВЕу */ ".151()пд)утгЕМЫ(ддтЁ д)а1уй)дф~ЕЩ.'.,/Е(ьрЕдд .,', »:, +, :.6)ать!СШПяддтя/Вс'Оятпатдтт)тт/ПО: дврЕВа' (Окг/ГЕЕ Гатдуд5ВттрФйят)' аьнаЛОт/ГИсцт)1О. ВБКСС~ЛЬ- ' йрму в том плане, что'тело рассматривается кзкьсовокупиосЕь шепстигрзййиков (Ск(уб — зго 'правильный шестигранник). Однако это представление предъявляет "".'значительно менее серьезные требования к памяти благодаря иной схеме деления.пространства. В воксельном представлении исходный куб делится сеткой йлоскостей, находящихся на равном расстоянии друг от друга по осям х, у и х '.
'. В представлении октантного дерева исходный куб делится каждый раз на восемь ",, равных кубов поперечными плоскостями (рис. 5.37, и). Объем маленького куба ,, в'восемь раэ меньше объема исходного, отсюда и название представления. Более того, если кубики представить в виде узлов дерева, то от каждого узла будет :,,отходить восемь ветвей (рис. 5.37, б). Такое дерево и называется окталглиым' (осдгее). Если бы каждый кубик всегда делился на восемь меньших вне зависи'.: "мости от формы моделируемого тела, то результат был бы полностью аналогичен ::". воксельному представлению с кубиками постоянного размера. Однако в пред' ставлении октантного дерева некоторые кубики делятся на восемь частей, тогда как другие кубики того же уровня остаются целыми.
Определяется это положением кубиков по отношению к представляемому телу. Рис. В.эт. Пример формирования окгантного дерева тд Аналогичное представление можно построить и лля двумерного объекта. но а этом случае дерево будет называться квадранты ым (т/иа/Ь ее). и Пррцедеура построения'- иредетаЬдепйМ:дяцгаитйИС14фдз(тд(-,вддгдщйдтт' р)Е~)фщцт)(':" '.Е ойргчзюм':-.Сиачдла создается шестигзрайник,:в:кптотрый' мбделйрьуемм::тдгл6зазддй18 тцхмт6я тцедцком, Этот шестигрэнцик называется дорттевыдт ~~,,:(ттнМзвс))дяф; Затем корневой октант делится на восемь октантов, после чего анализируется дух положение в пространстве по отношению к моделируемому телу. Если'окгапт находится полностью внутри тела, он считается «черным»; если снаружи — вбе- 'ЛЫМ».
ЕСЛИ жЕ ОКтаит ЧаСтИЧНО ЛЕжИт ВНУТРИ тЕЛа, а ЧаетИЧНΠ— СНаРУжИ, тп(/ЗДзт' считается «серым» и делится на восемь октантов меньшего размера. Черные„н белые октанты дальше не делятся. Процедура повторяется до тех пор, пока не б д достигнут заданный минимальный размер октанта, После этого октаиьтй, ° ."'тхт улет дос 1 Г окрашенные в черный цвет, считаются относящимися к исходному телу .
На рис. 5.37, в показано октантное дерево для тела с рис. 5.37, б. Количество октантов, под которые приходится отводить память, много меньше количества ать кселов лля тела того же объема, поскольку белые и черные октанты дальше йе делятся. Октантное дерево с рис. 5.37, в хранится в компьютере в виде структуры данных. Реализация такой структуры на языке С показана в листинге 5.2, а про! цедура формирования октантного дерева на основе этой структуры данных приводится в листинге 5.3.
Эта процедура представляет соботт, по сути, запись ца языке программирования описанных выше действий. Несмотря на относительно простой вид процедуры, подпрограмма с1азз1(у(р,т) требует сложных геометрических вычислений, поскольку она определяет, где находится конкретный октапт: -;::, т внутри тела, снаружи его или на границе. Серые октаттгы преобразуются в чер-" ные после окончания процесса леления. Поэтому объем модели, полученйой й ';„'д,: результате применения этой процедуры, будет заведомо больцтим объема исхп)(ь ного тела.
Листинг 5.3, Процедура формирования октантного дерева паде Сгее(р. С, Серва) ргтптыте *р. /* р - ноделируеный прииитив *l оссгее *С /* С - узел дерева. то есть исходное дерево с однин серын узнан "/ тпс Оерсл /" наксинвпьная глубина рекурсии */ ' Ссттые октанты также могут быль включены н представление. Объем тела пр н этом оттд .
эынается большим действительного. Если же брать только черные октэнты, , объем полы" 5 чится заведомо меньшим лейгтвнтельного. , йд)(са(с)вы~~~(р,: В)[у': " 'саве: Мйтв; ЬгеаК: сввв ВЙРП 1Г (цвртц 0) т- сц()в - в[дск: е)ве вц(я)1я1це(т): Гаг (1-0; 1<В; 1++) явде тгве(рд-»осп1) . ()ер Ьгевгс / фуннция определения цвета узла дерева *! с)авв)ту(-): гя функция деления узла на восвнь антантов */ вцЫ(у1пе(.,): г: Рис.
б.бб. Пример ячезчного прадставлвния Ячеечное представление 'Ячеечное представление (се(( г ( гергеяеп(алоп) — это еше один метод представления объемного тела в в виде комбинации простых элементов, подобный воксельному представлению. Однако, как следует из названия прсдст авления, ячеечныи метод не накладывает жестких ограничений на форму этих элементо . П о ъемное тело можно представить при помощи небольшого набора простых ячеек.
Пример ячеечного представления представлен на рис. 5.38. Как видно нз этого рис нк фо м у а, фор нрование сетки конечных элементов для конечнозлементного анализа явля ется частным случаем ячеечного представления. $.3.3. Операторы Эйлера Обратимся тепе ь к 3 р задачам, связанным с изменением структур данных зуемых в системах тве , испольердотельного моделирования. Эти задачи имеют особ жебных важность, посколь ф н и ку фу кц и моделирования реализуются посредством слуую ных операций, обновляющих структуры данных. ку ~ (ьшинство систем твердотелйишт) модели В Вер, ы рассмотРим оперции, мани~у~~ру~ ~г.." организованными именно в виде структуры В-Вер. Вы уже знаете, что и: етч))уиа~-",.'',' рах данных В-йер хранятся такие топологические элементы, как оболочки,"гй)~",::;, ни, кольца, ребра и вершины.
Мы можем рассматривать операторы, работа)ошйб:;„')) с такими элементами, то есть операторы создания ребра, удаления вершины и,'т'дт '.,~ Если эти операторы использовать в реализации функций моделирования, сраау-:: возникнут проблемы Попытка Рассматривать тогюлогический элемент отдельно от тех эпементови"е-: которыми он связан„несет в себе внутреннее противоречие. К топологическ)(Е)1:,';, элементам пРименимо пРиведенное ниже Равенство, котоРое называетсй ф(б)д(У'.;",,'я лой Эйлера-Пупнкаре 1120, 231. р-е+ )' — )) =2(в — Р), (5:..1).-.' где о — количество вергцин, е — количество ребер, у' — количество гранеи йлиь;" внешних колец, Ь вЂ” количество колец отверстий, в — количество оболочек и Р' "',,",.' количество сквозных проходов через отверстия в теле. Можно проверить з)з)-,'; уравнение на фигуре, изображенной на рис.
5.39. Здесь р = 16, у = 10, Ь = 2, в =,1 1~',!,'." р = 1 (посчитайте самостоятельно). Подставив этн значения в уравнение (5„1~".-'; мы получим: ~Ф~" 16 — 24+ 10 — 2 = 2(1-1). то есть уравнение 5.1 оказывается верным. Из этого уравнения мы можем сде-:;,'-;,' лать вывод, что шесть топологических элементов не могут быть независимы оЯ-,.%.,;в повременно.
Независимость обеспечивается лишь для пяти из них. Манипулирование топологическими элементами по отдельности оказывафятбв)'.":-; малоэффективным, поскольку в большинстве случаев добавление или удалей»яе"* элемента приводит к изменению состояния других элементов. Например, дс4зЬ".'[ ление диагонального ребра приводит к увеличению количества граней, носк(ир'-: '.
ку исходная грань делится на две (рис. 5АО). Для достижения зффективнв)зяб)) нужно иметь оператор, который самостоятельно заботился бы обо всех пой~"-":, ных эффектах этого рода. Р р б бб ПримеР обьамного Риз. бАб добавлани тела и изменению грани Итак, было бы удобно иметь операторы, которые манипулировали бы небодд)в)»»вя.'- ми группами топологических элементов, а не каждым из них в отдельности,';%~;-,';, скольку в формуле (5.1) одновременно являются независимыми пять злвмеФ))1))))в';-'1 для увеличения или уменьшения количества любого из шести топологич()()я((~1»~"'; Создать (уиичтажить) ребра, дее вершины,кольца„оболочку МЕЧЧ 8 (КЕЧЧьэ) МЕ(.