Разделы
Главная Сапромат Моделирование Взаимодействие Методы Инновации Индукция Исследования Факторизация Частоты
Популярное
Как составляется проект слаботочных сетей? Как защитить объект? Слаботочные системы в проекте «Умный дом» Какой дом надежнее: каркасный или брусовой? Как правильно создавать слаботочные системы? Что такое энергоэффективные дома?
Главная »  Сапромат 

1 ... 23 24 25 26 27 28 29

о со с

KXM.l*L(jO I1J

-инчдо.иЛЛЬпх

к1л1коогс

14 rod -jk nmiN.i4.cjo

о

onod je7 omrrXg

piiooiiiiriLg

raonodou OJ -oiinoiinir oit >l

о

кип

-armidn

и; С

doJ.

со т

дллюм ГПЧЬ хлЧЫ ii KKd]j

с

т

dV (ИШ11 UN

-jA d>i iroNKdy

С

К

см т

I ЕМКИ 111*111

-qiroj£oKKtI]i

л1чпх1 l.lNOlfg

о

1/ле1

-iiiioirohUi;di?ij

ПХКХЧьЛЧ:

od .innoirc

S3.0

Mxooirxdoiioir KRMMi.nd.Loivi:d -ми кшшоьээд

uxJOEixdonou rioMooiiHdxDivnd -ми mi кешк1)}

00 CO

HEIIIOlTIldn

II .11110жтх|д -oxo .lonoire

о

KiiintmwD чхэонхсЬппц

о

bi1ei

-Э1П0НЭ Kunnd>i

CN CO

BIIII01I

-HVD0.1 i:>[box

КИНКЕЛЮ ШОГППЛШ

-oimpd Kcaiid>

30 CN

IMEIEKIflO-Q OJOIIMLXIIOIiniXl 4XDOIIxdOO()ij

кмьох

CN CN

(1т/ ми iiti iinn -nimodirirXgcx

OJOMOOhlldXON

-i?dnu KTjniid>i

CD CO

XIIOIV

-.1I/G HNIIhOIIO}!

IGES 2.1

Kdtiotnndn

TXDOHXdoUOIJ

О

вш111т/

ixaoirxdjfion Kim?Fiiioiiii[/*

*c о

k.iXv

LO CN

PIIIll 1 1 1 оло 13

-0hiidxi\idi;ii ixioiixdonojj

CN О

licnirdM bt im ХЭ03

Bumuiowxlyo -odn miiidxE!(\

о

ЧХЭОМЭОЬц

о о

EIX.1

-шгэклЧЬю шл 1/

ШИПЕЛ/ ON 11 -ПЭПХ.ЮЖОПЭД

Ki iiimxlnir

-л1лщ IIll

вша omtdnij.

lExaoirxdofioy j

3iqirrid>j

.nihodjj

При использовании препроцессоров и постпроцессоров с нейтральным форматом IGES на практике возникают следующие проблемы. Во-первых, внутренний способ представления элемента в системе может отличаться от того, как этот элемент представляется в IGES. Например, дуга окружности в какой-то системе может быть определена через центр, радиус и начальный и конечный углы, но в IGES она определяется через центр, начальную точку и конечную точку. Таким образом, специализированный IGES-конвертор должен выполнить преобразование с использованием параметрического уравнения дуги. Такое преобразование должно выполняться дважды (при прямой и обратной конвертации), и каждый раз значения параметров дуги искажаются из-за ошибок усечения и округления Вторая проблема более серьезна: она возникает, когда элемент не поддерживается явно, и поэтому его необходимо преобразовать в ближайший по форме доступный элемент. Эта проблема часто имеет место при обмене данными между двумя системами через IGES-файл, если конверторы этих систем поддерживают разные версии IGES. Типичный пример - потеря символьной информации в случае, когда одна из двух систем использует более старую версию IGES, не поддерживающую макросы.

14.3. Формат DXF

Формат DXF (Drawing interchange Format - формат обмена чертежами) изначально разрабатывался для того, чтобы предоставить пользователям гибкость в управлении данными и преобразовании чертежей программы AutoCAD в форматы файлов, которые могли читаться и использоваться другими САПР. Из-за популярности AutoCAD формат DXF стал фактическим стандартом обмена файлами CAD-чертежей почти для всех САПР. На самом деле почти в каждой из появляющихся новых САПР имеется транслятор в формат DXF и обратно. 1

DXF-файл - это текстовый ASCII-файл, состоящий из пяти разделов: Header (Заголовок), Table (Таблица), Block (Блок), Entity (Элемент) и Terminate (Конец). В разделе Header описывается среда AutoCAD, в которой был создан DXF-файл. В разделе Table содержится информация о типах линий, слоях, стилях текста и видах, которые могут быть определены на чертеже. В разделе Block содержится список графических элементов, определенных как группа. Таким образом, раздел Block эквивалентен определению дисплейного файла (см. главу 3). Конкретные данные по каждому элементу хранятся в соответствующем разделе Entity, который следует сразу за разделом Block. Раздел Entity - это главный раздел DXF-файла, в котором описываются все элементы, присутствующие на чертеже. Подробное описание этих разделов можно найти в [81].

Аналогично тому как это происходило с IGES-файлами, с появлением новых версий AutoCAD список возможных элементов DXF-файлов расширялся. DXF-файл, созданный более поздней версией AutoCAD, не может быть прочитан другими системами, использующими более старые версии формата DXF.

14.4. Формат STEP

Форматы IGES и DXF были разработаны для обмена данными технических требований, а не данными о продукте. Под данными о продукте мы понимаем данные, относящиеся ко всему жизненному циклу продукта (например, проекта-



wv* л. i unOJ I Dl yuiltriu HUrlnDinn 1 1С/Т\Ду LVlLICPldPlH

рование, производство, контроль качества, испытания и поддержка). Хотя спецификации IDES и DXF были расширены с целью включения некоторых из этих данных, информации, содержащейся в этих файлах, по существу недостаточно для описания всего жизненного цикла продукта. Вследствие этого в США в 1983 году началась разработка нового стандарта под названием PDES (Product Data Exchange Specification - спецификация для обмена данными о продуктах). Основной упор в PDES делался не на обмен данными технических требований, а на то, чтобы исключить человеческое присутствие из обмена данными о продукте. Иначе говоря, целью PDES было устранить потребность в инженерных чертежах и других бумажных документах при обмене информацией о различных фазах жизненного цикла продукта между сходными или различающимися САПР. Между тем в июле 1984 г. в Международной организации по стандартизации (ISO) были образованы технический комитет ТС 184 (Системы промышленной автоматизации) и его подкомитет SC4 (Внешнее представление данных о модели продукта) для установления единого международного стандарта обмена данными о модели продукта - STEP (STandard for Exchange of Product model data). Цели PDES и STEP были идентичны, поэтому в июне 1985 г. Управляющий комитет IGES решил, что интересы США в программе STEP должен представлять стандарт PDES. В результате значение акронима PDES поменяли на обмен данными о продукте с использованием STEP (Product Data Exchange using STEP), чтобы подчеркнуть идентичность целей PDES и STEP.

В основе разработки STEP лежат следующие принципы.

□ Стандарт STEP должен ориентироваться на данные о продукте, которые включают информацию обо всем жизненном цикле продукта: проектировании, производстве, контроле качества, испытании и поддержке. Таким образом, в качестве данных должна рассматриваться информация о допусках, технологических особенностях формы, конечноэлементная модель, модель для кинематического анализа и т. д., а также данные технических требований, относящиеся главным образом к форме продукта.

□ В структурах данных STEP информация, относящаяся к приложению, должна храниться в модуле уровня приложения, отдельно от общей информации о форме. Благодаря такому подходу структура данных сможет поддерживать широкий спектр приложений, избегая при этом избыточности в общей структуре данных.

□ Для определения структуры данных должен использоваться формальный язык. Спецификации IGES и DXF описывают формат физического файла, в котором хранятся все геометрические и прочие данные. В STEP данные описываются на языке EXPRESS, а затем результат преобразовывается в физический файл. Таким образом можно избежать неоднозначностей при интерпретации данных о продукте, извлеченных из файла.

STEP разрабатывается рядом комитетов и рабочих групп, занимающихся разными частями стандарта. Эти части группируются по методам описания, интегрированным информационным ресурсам, прикладным протоколам, методам реализации и методологией согласования (рис. 14.6 и рис. 14.7). Статус каждой части показан рядом с ее номером. Статус обозначается буквами от О (предвари-

-г Й л.

тельная стадия ISO) до I (международный стандарт - высшая стадия разработки и принятия стандартов). Части, обозначенные буквами Е , F (проект международного стандарта) и I , считаются находящимися на достаточно высоком уровне для того, чтобы позволить производителям программных продуктов приступить к их реализации.

Группа методов описания образует фундамент STEP. Она включает часть 1 Обзор , которая содержит также определения, являющиеся в STEP универсальными. Принадлежащая той же группе часть 11 Справочное руководство по языку EXPRESS описывает язык моделирования данных, который используется в STEP. Части, относящиеся к группе методов описания, имеют номера от 1 до 9.

На следующем уровне находится группа интегрированных информационных ресурсов - части, содержащие фактическое описание моделей данных STEP. Эти модели данных являются кирпичиками STEP. Интегрированные информационные ресурсы включают обобщенные ресурсы, прикладные ресурсы и конструкции, интерпретируемые приложением.

Прикладные протоколы и абстрактные испытательные пакеты

1 201 Явное черчение (W)

I 202 Ассоциативное черчение (С)

1 203 Проектирование с контролем конфигурации (С)

С 204 Проектирование механических объектов с

использованием граничного представления (С) С 205 Проектирование механических объектов с

использованием поверхностного представления (W) X 206 Проектирование механических объектов с

использованием каркасов (X) Е 207 Планирование и проектирование штампов из листового

металла (С)

W 206 Процесс изменил продукта в ходе жизненного цикла (W)

С 209 Композитные и металлические структуры, анализ и

проектирование (W) С 210 Проектирование и изготовление печатных плвт (W) X 211 Тестирование, диагностика и модернизация (W) С 212 Электротехническое проектирование и сборка (W) Е 213 Планирование процесса машинной обработки деталей

на станках с ЧПУ (W) С 214 Основные данные для процессов проектирования

автомобильных механизмов (W) W 215 Схемы судов (W)

W 216 Формы поверхностей судовых корпусов (W)

W 217 Системы судовых трубопроводов (W)

W 21В Судовые надстройки (W)

X 219 Контроль размеров (X)

0 220 Печатные платы: планирование производства (0)

С 221 Функциональные данные технологического процесса и

его схематическое представление (W) W 222 Проектирование композиционных структур (W) W 223 Явная информация о проектировании и изготовлении

питых деталей (W) Е 224 Определение деталей, требующих механической

обработки(W) Е 225 Структурные элементы, требующие явного

представления формы (W) W 226 Судовые механические системы (W) Е 227 Пространственная конфигурация завода (0) 0 228 Вспомогательные системы зданий: отопление.

вентиляция, кондиционирование (0) W 229 Кованые детали (W)

W 230 Строительные каркасы: стальные конструкции (W)

W 231 Данные для разработки процессов (W)

W 232 Оформление технических данных (W)

0 Нейтральный формат обмене данными (0)

0 Поддержка жизненного цикла продукта - НАТО (0)

0 SGML и индустриальные данные (0)

Методы реализации

1 21

Текстовый обменный файл

С

Поздний С++ (интерфейс для № 22)

Стандартный интерфейс доступа к данным

Поздний Fortran

Ранний С++ (интерфейс для № 22)

Е

IDL (интерфейс для № 22)

Методологические основы аттестационных испытаний

Общие понятия

Е

Требования к испытательным лебораториям и клиентам

Абстрактные испытательные пвкеты

С

Абстрактные испытательные методы для реализации чвсти 21

Абстрактные испытательные методы для реализации части 21 (дополнительные)

Рис. 14.6. Архитектура STEP (1)



Методы описания

I 1 Обзор и фундаментальные принципы

I 11 Справочное руководство ло языку Express

X 12 Справочное руководство ло языку Express (тип 2)

Интегрированные информационные ресурсы

Интегрированные п

рикладные ресурсы

I 101 Черчение

X 102 Корабельные структуры

X 103 ЕУЕ-соединение

С 104 Конечноэлементный анализ

I 105 Кинемвтика

W 106 Построение базовой модели

А 107 Разработка аналитической модели

Интегрированные обобщенные ресурсы

I 41 Основное описание и спецификация продукта I 42 Геометрическое и топологическое представление

продукта I 43 Уточняющее представление 1 44 Структурная конфигурация продукта

F 45 Материалы

1 46 Визуальное представление

F 47 Допуски

X 48 Характеристики формы

F 49 Структура и свойства процесса

Конструкции, интерпретируемые приложением

С 501 Реберный каркас С 502 Оболочечный каркас

С 503 Геометрические ограничения даумерного каркаса

С 504 Надписи на чертеже

С 505 Структура чертежа

С 506 Элементы чертежа

С 507 Геометрические ограничения поверхности

С 508 Нетрубчатые поверхности

С 509 Трубчатые поверхности

С 510 Геометрические ограничения каркаса

С 511 Топологические ограничения каркаса

С 512 Ячеистое греничное представление С 513 Элементарное граничное представление С 514 Расширенное граничное представление С 515 Конструктивная твердотельная геометрия X 516 Контекст проектирования механических объектов С 517 Геометрическое представление механических объектов

С 518 Объемное представление механических объектов

С 519 Геометрические допуски

С 520 Ассоциированные элементы чертеже

Рис. 14.7. Архитектура STEP (2)

Интегрированные обобщенные ресурсы - это элементы, которые используются по необходимости прикладными протоколами. Номера частей, относящихся к обобщенным ресурсам, начинаются с 40 и используются всей гаммой прикладных протоколов STEP. Интегрированные прикладные ресурсы содержат элементы, имеющие несколько больший объем контекста, чем обобщенные элементы. Номера частей, относящихся к прикладным ресурсам, начинаются со 100. Части с номерами от 500 - это конструкции, интерпретируемые приложением. Они представляют собой многократно используемые группы информационных ресурсов, облегчающие представление одной и той же семантики в различных прикладных протоколах.

На верхнем уровне иерархии STEP находятся более сложные модели данных, используемые для описания конкретных данных о продукте. Эти части называются прикладными протоколами и описывают не только то, какие данные должны использоваться при описании продукта, но и то, как эти данные должны использоваться в модели. Прикладные протоколы используют интегрированные информационные ресурсы в четко очерченных сочетаниях и конфигурациях для представления определенной модели данных или некоторой фазы жизненного Цикла продукта. Прикладные протоколы нумеруются, начиная с 200. В настоящее время используются такие прикладные протоколы, как Явное черчение (201) и Проектирование с управлением конфигурацией (203).

Группа методов реализации STEP, части в которой нумеруются с 20, описывает соответствие между формальными спецификациями STEP и представлением, используемым для реализации STEP. Группа методологии проверки соответствия, части в которой нумеруются с 30, предоставляет информацию о методах проверки соответствия программных продуктов стандарту STEP, дает указания по созданию абстрактных испытательных пакетов и описывает задачи испытательных лабораторий. Часть 31, описывающая методологию выполнения проверки соответствия, принята в качестве международного стандарта (см. рис. 14.6). Стандарты STEP уникальны в том отношении, что они делают упор на испытания и содержат в себе описания методов испытаний.

Группа частей с номерами от 300 (абстрактные испытательные пакеты), состоит из данных и критериев, используемых для проверки соответствия программного продукта, реализующего стандарт STEP, его прикладному протоколу. Номера, присваиваемые абстрактным испытательным пакетам, превышают номера прикладных протоколов ровно на 100. Таким образом, абстрактный испытательный пакет с номером 303 относится к прикладному протоколу 203. Более подробную информацию о STEP можно получить на сайте http: www.nist.gov/sc4.

Сегодня STEP привлекает к себе повышенное внимание, так как ожидается, что он войдет в систему стандартов технологий CALS (Computer-aided Acquisition and Logistics Support - Непрерывные поставки и информационная поддержка жизненного цикла продукции) как стандарт обмена данными о продуктах. Цель инициативы CALS, автором которой является Министерство обороны США, - компьютеризация процесса формирования требований, заказа, эксплуатации, поддержки и обслуживания систем вооружений, используемых в армии США. Основное внимание эта инициатива уделяет заданию форматов, которые будут использоваться для хранения и обмена компьютерными данными. Хотя CALS создавалась для военных целей, она становится промышленным стандартом хранения и обмена компьютерными данными в организации.

Вопросы и задачи

1. Опишите преимущества и недостатки использования стандартного формата при обмене данными технических требований между различными САПР.

2. Создайте DXF-файл для чертежа из задачи 1.1 к главе 4 с помощью системы автоматизированной разработки чертежей. Прочитайте этот файл в другой чертежной системе и выведите чертеж на экран. Каковы будут ваши выводы?

3. Создайте IGES-файл для объекта из задачи 8 к главе 12, прочитайте этот файл в другой системе твердотельного моделирования и попытайтесь выполнит следующее.

1) Выведите объект на экран.

2) Рассчитайте центр тяжести объекта.

Какие можно сделать выводы о возможностях IGES по обмену данными о твердых телах?

4. Опишите преимущества использования STEP в качестве стандарта.



Solidno:

Идентификатор объема */

Face

*sfaces:

Указатель на список граней */

Edge

*sedges:

Указатель на список ребер */

Vertex

*sverts:

Указатель на список вершин */

Solid

*nexts;

Указатель на следующий объем */

Solid

*prevs;

Указатель на предыдущий объем */

struct face {

Id faceno; /* Идентификатор грани */

Solid *fsolid: /* Обратный указатель на объем */

Loop *flout: /* Указатель на внешнее кольцо */

Loop *floops: /* Указатель на список колец */

vector feq: /* Уравнение грани */

Face *nextf: /* Указатель на следующую грань */

Face *prevf: /* Указатель на предыдущую грань */

struct loop {

HalfEdge *ledg: /* Указатель на кольцо полуребер */ Face *1face: /* Обратный указатель на грань */ Loop *nextl: /* Указатель на следующее кольцо */

Реализация структуры данных полуребер

Loop *prevl: /* Указатель на предыдущее кольцо */

struct edge {

HalfEdge *hel; /* HalfEdge *he2: /* Edge *nexte: /* Edge *preve: /*

struct halfedge {

Edge *edge: /* Vertex *vtx; /* Loop *prevl: /* HalfEdge *nexthe; /* HalfEdge *prevhe: /*

Указатель на правое полуребро */ Указатель на левое полуребро */ Указатель на следующее ребро */ Указатель на предыдущее ребро */

Указатель на родительское ребро */ Указатель на начальную вершину */ Обратный указатель на кольцо */ Указатель на правое полуребро */ Указатель на левое полуребро */

struct vertex

vertexno: /* Идентификатор вершины */

HalfEdge *vedge: /* Указатель на полуребро */

vector *vcoord: /* Координаты вершины */

Vertex *nextv: /* Указатель на следующую вершину */

Vertex *prew: /* Указатель на предыдущую вершину */

union nodes {

Solid s;

Face f:

Loop 1:

HalfEdge h;

Vertex v:

Edge e;

Листинг А.2. Процедура поиска всех ребер, содержащих вершину

#define mate(he) (((he) = (he)->edg->hel) ? \

(he)->edg->he2 : (he)->edg->hel) void list adjacent edge(V. List) Vertex *V; Edge *list[]: {

HalfEdge *adj: int i = 0:

adj = V->vedge:

if(adj) do {

list[1] - adj->edg; i++:

while((adj = mate(adj)->nexthe) != V->vedge): else pnntf( 0uiH6Ka\n ):

Реализация структуры данных полуребер

В листинге А.1 продемонстрирована реализация структуры данных полуребер, использованная Мянтюля [106] в системе твердотельного моделирования GWB. Структура данных реализована на языке С.

Процедура, приведенная в листинге А.2, - это подпрограмма на С, которая ищет все ребра, содержащие заданную вершину. Эта процедура показывает, что структура данных полуребер, показанная в листинге А.1, предоставляет необходимую информацию о смежности для топологических элементов.

Листинг А.1. Структура данных полуребер, предложенная Мянтюля

typedef float vector[4]:

typedef float matrix[4][4]:

typedef short Id;

typedef struct solid Solid:

typedef struct face Face:

typedef struct loop Loop:

typedef struct haIfedge HaIfedge;

typedef struct vertex Vertex:

typedef struct edge Edge:

typedef union nodes Node:

struct solid {



Листинг Б.1. Реализация структуры данных крыльевых ребер в SNUMOD

typedef struct snu body Body typedef struct snu shel1 Shel1:

Face:

typedef struct snu face typedef struct snu loop typedef struct snu edge typedef struct snu vertex typedef struct snu surface typedef struct snu curve typedef struct snu point

struct snu body {

Body

*next

She 1

*shell

: /*

char

*name

struct snu

.shel 1

Body

*body

Shell

*next

Face

*face

struct snu r

face

Shell

*shell: /*

Face

*next: /*

Loop

*loop: /*

Surface

♦surface: /*

struct snujoop

Face

*face

Loop

*next

Edge

*edge

*type

Loop:

Edge:

Vertex:

Surface:

Curve:

Point:

Идентификатор тела */

Указатель на тело */

Указатель на кольцо */

Указатель на геометрические данные */

Реализация структуры данных крыльевых ребер

struct snu edge

int id: /* Идентификатор ребра */

Loop *left loop: /* Указатель на левое кольцо */

Loop *right loop: /* Указатель на правое кольцо */

Edge *left arm: /* Указатель на левую руку (левое ребро

против часовой стрелки) */ Edge *left leg: /* Указатель на левую ногу (левое ребро

по часовой стрелке) */ Edge *right arm: /* Указатель на правую руку (правое ребро

против часовой стрелки) */ Edge *right leg: /* Указатель на правую ногу (правое ребро

по часовой стрелке) */ Vertex *tail vertex: /* Указатель на хвостовую вершину

(предыдущая вершина) */ Vertex *head vertex: /* Указатель на головную вершину

(следующая вершина) */ Curve *curve: /* Указатель на геометрические данные */

struct snu vertex {

int id: /* Идентификатор вершины */

Edge *edge: /* Указатель на ребро */

Point *point: /* Указатель на геометрические данные */

Реализация структуры данных крыльевых ребер

В листинге Б.1 показана структура данных крыльевых ребер, используемая в SNUMOD. Структура данных реализована на языке С.



Приложение В Операторы Эйлера

В.1. Операторы Эйлера, используемые в SNUMOD

В.1.1. MEWLS и KEWLS - создать (уничтожить) ребро, две вершины, внешнее кольцо и оболочку

Оператор MEWLS вызывается для создания оболочки при первоначальном создании объема или при добавлении пустоты к существующему объему. В реальности MEWLS просто выделяет место в памяти под оболочку, объявляя о ее создании. Он также создает две вершины, ребро между этими вершинами и внешнее кольцо, обходящее вершины в обоих направлениях. Это кольцо будет использоваться в качестве начального элемента, который превратится в реальную оболочку по ходу операции моделирования. При создании внешнего кольца создается также грань. Однако геометрическая информация о грани при создании ее оператором MEWLS не добавляется, поскольку это всего лишь абстрактная грань, с помощью которой выделяется требуемая память1. Необходимая геометрическая информация появится, когда начальное ребро по ходу операции моделирования превратится в замкнутую цепочку, содержащую в себе область.

Описание изменения топологии, произведенного оператором MEWLS, иллюстрируется схематической диаграммой на рис. В.1. Периферийное кольцо L1 представляет собой цепочку, проходящую по маршруту V1-V2-V1 и не содержащую в себе площади. Площадь появится в ней по ходу моделирования, и соответствующая грань получит необходимую геометрическую информацию.

MEVVLS

KEVVLS

Рис. В.1. Действие оператора MEWLS (KEWLS)

Входные и выходные аргументы оператора MEWLS могут быть описаны следующим образом:

MEVVLS (В. &Е1. &V1. &V2. &L1. &S1. XI. Yl. Zl. Х2. Y2. Z2)

Выделение места в памяти для топологического элемента.

В.1. Операторы Эйлера, используемые в SNUMOD

В этом выражении элементы, перед которыми стоит символ &, являются выходными элементами, генерируемыми оператором MEWLS, а остальные элементы являются входными. Поэтому данное выражение можно интерпретировать так, что на объеме В создаются новое ребро Е1, новые вершины V1 и V2 в точках (х1, у1, z1) и (х2, у2, z2), новое внешнее кольцо L1 и новая оболочка S1. Тот же способ записи мы будем использовать для различения входных и выходных аргументов в других операторах Эйлера.

Соответственно, обратный оператор KEWLS может быть описан следующим образом:

KEVVLS (В. El. VI. V2. LI. S1. Ш. &Y1. &Z1. &Х2. &Y2. &Z2)

Обратные операторы весьма полезны для реализации функции Откат, или Отмена (Undo), которая отменяет ранее выполненную операцию моделирования. Именно поэтому большинство систем твердотельного моделирования одновременно реализуют и прямые, и обратные операторы.

В.1.2. MEL и KEL - создать (уничтожить) ребро и внешнее кольцо

Оператор MEL добавляет ребро Е1, соединяющее вершины V1 и V2 в кольце L1 (рис. В.2). В результате применения оператора MEL исходное кольцо L1 делится на два новых кольца L1 и L2. Исходное кольцо, которое подвергается делению, может быть внешним кольцом (рис. В.2, а) или кольцом отверстия (рис. В.2, б). Но просто добавить ребро и кольцо мало: оператор MEL должен обновлять соединения ребер в вершинах V1 и V2 и связи ребро-кольцо, чтобы отразить разделение исходного кольца L1 на два новых кольца.


б

Рис. В.2. Действие оператора MEL (KEL)

Входные и выходные аргументы операторов MEL и KEL могут быть описаны следующим образом (В по-прежнему обозначает объем):

MEL (В. LI. VI. V2. &Е1. &L2) KEL (В. &L1. &V1. &V2. El. L2)



Приложение В. Операторы Эйлера

В. 1.2. MEV и KEV - создать (уничтожить) ребро и вершину

Оператор MEV создает ребро Е1, проходящее от вершины V1 кольца L1 до заданной точки (х, у, z), и добавляет это ребро к кольцу L1 (рис. В.З). Разумеется, в заданной точке создается также новая вершина V2. Ребро Е1 может быть добавлено к внешнему кольцу (рис. В.З, а) или к кольцу отверстия (рис. В.З, б).


б

Рис. В.З. Действие оператора MEV (KEV)

Как и в случае оператора МЕЦ необходимо обновить связь ребра в вершине VI, чтобы новое ребро Е1 было включено в кольцо L1 (то есть ребро Е1 будет фигурировать дважды в списке ребер, как соединительные ребра, описанные в разделе 5.3.2, когда из обновленной информации о связях будет получен список ребер кольца L1).

Входные и выходные аргументы операторов MEV и KEV могут быть описаны следующим образом (В по-прежнему обозначает объем):

MEV (В. LI. VI. &Е1. &V2. X. Y. Z) KEV (В. &L1. &V1. El. V2. &Х. &Y. &Z)

Оператор KEV является обратным по отношению к MEV.

В.1.2. MVE и KVE - создать (уничтожить) вершину и ребро

Оператор MVE разделяет ребро Е1, добавляя к нему вершину V1 в точке (х, у, z), и соответственно заменяет старое ребро Е1 двумя новыми Е1 и Е2 (рис. В.4). Поэтому входные и выходные аргументы операторов MVE и KVE могут быть описаны следующим образом (В по-прежнему обозначает объем):

MVE (В. El. &V1. &Е2. X. Y. Z) MVE (В. &Е1. VI. Е2. &Х. &Y. &Z)

Оператор KVE можно интерпретировать как обратный по отношению к MVE.

Эффекты, показанные на рис. В.4, достигаются путем изменения одной вершины и соседних ребер Е1 и записью аналогичной информации для Е2. Подробности приведены в листинге В.1, который демонстрирует реализацию оператора MVE

В.1. Операторы Эйлера, используемые в SNUMOD

на языке С на основе структуры крыльевых ребер (листинг Б.1). Выполнение шагов процедуры в листинге В.1 четко демонстрирует, как реализуются эти операторы Эйлера. Другие операторы Эйлера могут быть реализованы аналогично, i



Рис. В.4. Действие оператора MVE (KVE)

Листинг В.1. Реализация оператора MVE

MVE (В. El. VI. Е2. х. у. z)

Body *В:

Edge *Е1.

Vertex **V1:

Edge **Е2:

double х. у. z:

(*V1) = malloc(sizeof(Vertex)): (*E2) = malloc(sizeof(Edge)); (*E2)->tail vertex = *V1: (*E2)->head vertex = El->head vertex: (*E2)->right leg - El; (*E2)->left leg - El: (*E2)->nght arm = El->right arm: (*E2)->left arm = El->left arm: (*E2)->right loop - El->right loop: (*E2)->left loop - El->left loop: (*Vl)->edge = *E2:

(*Vl)->point.x = x: (*Vl)->point.y = y: (*Vl)->point.z - z: El->right arm = El->left arm = *E2: El->head vertex = *V1;

B.1.5. MEKH и KEMH - создать (уничтожить) ребро и уничтожить (создать) кольцо отверстия

Оператор МЕКН соединяет внешнее кольцо и кольцо его отверстия, добавляя ребро, в результате чего получается одно внешнее кольцо (рис. В.5, о), либо соединяет два кольца отверстия в одно кольцо отверстия (рис. В.5, б). Если говорить точнее, он соединяет вершину V1 кольца L1 с вершиной V2 кольца V2, добавляя между ними ребро Е1, и изменяет кольцо L1 так, чтобы оно включало L2. Таким образом, входные и выходные аргументы операторов МЕКН и КЕМН могут быть описаны так:

МЕКН (В. VI. V2. LI. L2. &Е1) КЕМН (В. Ш. &V2. &L1. &L2. Е1)

Оператор КЕМН можно интерпретировать как обратный по отношению к МЕКН.







КЕМН б

Рис. В.5. Действие оператора МЕКН (КЕМН)

В. 1.6. MZEV и KZEV - создать (уничтожить) ребро нулевой длины и вершину

Оператор MZEV разбивает вершину V1 на две новые вершины VI и V2, добавляя ребро Е1 нулевой длины (рис. В.6). Вершина разбивается вертикально, а не горизонтально, поскольку новое ребро Е1 принадлежит заданным кольцам L1 и L2. Таким образом, вершина V1 будет разбита горизонтально, если на входе будут заданы кольца L3 и L4 (см. рис. 5.31). Входные и выходные аргументы операторов MZEV и KZEV могут быть описаны так:

MZEV (В. LI. L2. VI. &Е1. &V2) KZEV (В. &L1. &L2. &V1. E1.&V2)

Оператор KZEV можно интерпретировать как обратный по отношению к MZEV.


Рис. В.6. Действие оператора MZEV (KZEV)

В.1.7. МРКН и KPMH - создать (уничтожить) внешнее кольцо и уничтожить (создать) кольцо отверстия

Оператор МРКН преобразует кольцо отверстия во внешнее кольцо (рис. В.7). Точнее, он преобразует кольцо отверстия L1 во внешнее кольцо. Кроме того, он Дает на выходе кольцо L2, чтобы зафиксировать тот факт, что кольцо L1 изначально было кольцом отверстия L2. Аналогичным образом, оператор КРМН преобразует внешнее кольцо L1 в кольцо отверстия, принадлежащее внешнему кольцу L2. Исходя из этого, входные и выходные аргументы операторов МРКН и КРМН могут быть описаны так:

МРКН (В. LI. &L2) КРМН (В. LI. L2)


Рис. В.7. Действие оператора МРКН (КРМН)

При применении операторов МРКН и КРМН, когда кольцо отверстия L1 превращается во внешнее кольцо, могут образоваться два несвязанных объема. Справиться с этой проблемой можно, сохранив разъединенные объемы внутри отдельных оболочек после выполнения поиска по внешним кольцам, образующим каждую из оболочек. Точно так же необходимо объединить две отдельные оболочки, если кольца L1 и L2 изначально принадлежат отдельным оболочкам, заданным КРМН.

В.2. Применение операторов Эйлера

Теперь приведем несколько примеров, показывающих, как описанные выше операторы Эйлера используются для реализации функций моделирования. Другие функции моделирования могут быть реализованы аналогичным образом.

В.2.1. Трансляционное заметание

Сначала мы продемонстрируем, как операторы Эйлера вызываются в функции трансляционного заметания, создающей объем путем трансляции двумерной замкнутой области. Предположим, что функция моделирования требует от нас нарисовать двумерный профиль в плоскости ху. Это предположение не ограничивает возможностей моделирования, поскольку объему, созданному таким способом, можно будет придать желаемую ориентацию позже. Ниже следует описание процедуры.

1. Из двух точек на двумерном профиле, который предстоит транслировать, создается начальный элемент. А именно, с помощью оператора MEWLS мы создаем две вершины в этих точках, ребро между вершинами, внешнее кольцо, обходяшее эти вершины в обоих направлениях, и оболочку (рис. В.8). Кольцо изображается цепочкой со стрелками. Непременно обратите внимание на то, как изменяется кольцо L1 по ходу процедуры. Кольцо и оболочка не имеют физического смысла на этом шаге, но об их существовании заявляется с целью выделения памяти.


Рис. В.8. Результат после шага 1

2. Точки профиля соединяются с созданным на шаге 1 начальным ребром путем применения операторов MEV, следуя профилю до тех пор, пока все точки не



окажутся соединены (рис. В.9). Если профиль содержит п точек, оператор MEV будет вызван на этом шаге п - 2 раз.


Рис. В.9. Результат после шага 2

3. Добавлением ребра между первой и последней вершиной с помощью оператора MEL создается замкнутый многоугольник (рис. В. 10). Обратите внимание, что исходное кольцо L1 разделяется новым ребром на два новых кольца L1 и L2. Позже мы обнаружим, что L1 станет верхней гранью, a L2 - нижней гранью создаваемого объема.


Рис. В. 10. Результат после шага 3

4. В направлении трансляции создаются ребра (рис. В. 11). Для этого п раз вызывается оператор MEV. Результаты вызова оператора MEV один и п раз соответственно показаны на рнс. В. 11 и рис. В. 12. Обратите внимание, как меняется кольцо L1 по мере применения операторов.



Рис. В.11. Результат после однократного применения оператора MEV

5. Боковые

Рис. В. 12. Результат после применения оператора MEV п раз

грани создаются путем добавления соответствующих ребер (рис. В.13 и В.14). Для этого п раз вызывается оператор MEL. Результаты вызова оператора MEL один и п раз соответственно показаны на рис. В.13 и В.14. Когда операция заметания будет закончена, L1 станет верхней гранью.

Рис. В.13. Результат однократного применения оператора MEL

Рис. В.14. Результат после применения оператора MEL п раз

В.2.2. Вращательное заметание

Теперь рассмотрим вращательное заметание, при котором объем создается путем вращения двумерной замкнутой области. Предположим, что функция моделирования требует от нас нарисовать двумерный профиль в плоскости хг, где z является осью вращения (рис. В.15). Это предположение не ограничивает возможностей моделирования, поскольку объему, созданному таким способом, можно будет придать желаемую ориентацию позже. Ниже следует описание процедуры. Эта процедура описывает вращение на 360°, однако чтобы получить процедуру для неполного оборота, потребуются лишь незначительные модификации.

Рис. В. 15. Замкнутый профиль в плоскости xz

1. Из двух точек на двумерном профиле, который предстоит вращать, создается начальный элемент (рис. В.16). Это делается с помощью оператора MEWLS, как и в трансляционном заметании. Обратите внимание, что кольцо определяется так же, как на рис. В.8.


Рис. В.16. Результат после шага 1



2. Точки профиля соединяются с созданным на шаге 1 начальным ребром путем применения операторов МБ/, следуя профилю до тех пор, пока все точки не окажутся соединены, как и на шаге 2 процедуры трансляционного заметания. Если профиль содержит п точек, оператор MEV будет вызван на этом шаге п - 2 раз. Результат изображен на рис. В. 17.


Рис. В. 17. Результат после шага 2

3. Шаги 1 и 2 повторяются для создания зеркального отображения профиля по отношению к плоскости yz (рис. В. 18). После создания зеркального изображения вызывается оператор КРМН, уничтожающий оболочку, связанную с этим изображением, и превращающий кольцо L2 в кольцо отверстия, принадлежащего L1.



Рис. В. 18. Результат после шага 3

4. Кольцо L2 сливается с кольцом L1 путем соединения их ребром. Оператор МЕКН создает соединительное ребро с полукруглой геометрией на плоскости ху (рис. В. 19).


5. Симметричные вершины соединяются соответствующими ребрами (рис. В.20 и В.21). Каждое ребро будет иметь форму полуокружности, как и выше. Для этого п - 1 раз выполняется оператор MEL Результаты вызова оператора MEL один и п - 1 раз соответственно показаны на рис. В.20 и В.21. Обратите внимание, как меняется кольцо L1 по мере применения операторов MEL



6. Шаг 5 повторяется, в результате чего создаются грани на задней половине объема (то есть оператор MEL применяется п раз). Чтобы понять, что происходит на этом шаге, просто посмотрите на рисунки, демонстрирующие изменение геометрии по мере применения операторов MEL. Поскольку задняя сторона объема лучше отображается при виде сверху, на рис. В.22, В.23 и В.24 показан вид объема сверху после выполнения шага 5 и после применения оператора MEL один и п раз соответственно. Обратите внимание на то, как меняется кольцо L1 по мере применения операторов MEL по завершении операции вращательного заметания L1 становится нижней гранью.





1 ... 23 24 25 26 27 28 29