Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 97
Текст из файла (страница 97)
В.26, д). О Связующее ребро удаляется оператором КЕМН. Так как КЕМН превращает' одно из двух колец, связаииых с удаляемым ребром, в колыю отверстия, ни)',: обходимо преобразовать его во внешнее кольцо с помощью оператора мйф~. Как было сказано выше, МРКН обнаружит наличие двух иесвязаииых 'оби.-' лочек и сохранит разделенные шестигранники в двух отдельных оболочках:: '-': (рис.
В.27, е). Приложение Г .-'е тк Обьединвние Пересечение Разность Рис. ГПЦ Пример булевской операции Рис. Г.2. Определение ксегмента Пошаговый алгоритм реализации .6улевской операции .Алгоритм выполнения булевских операций, используемый в 51х1)МОО, можно писать следующим образом для случая операции, изображенной на рис. Г.1.
1. Вычисляются кривые пересечения всех граней объема А и всех граней объема В; объемы А и В показаны на рис. Г.1. Затем находятся фрагменты каждой из кривых пересечения, лежащие внутри двух граней, которые пересекаются по данной кривой (рис. Г.2). Далее такие фрагменты будут называться ксегментами (хейтлел~). Вычисление кривой пересечения между двумя гранями — сложная задача.
Однако оно является важным аспектом определения эффективности и устойчивости булевской операции. В зависимости от типов уравнений, используемых для представления каждой' поверхности, можно использовать различные методы вычисления кривых пе-, ':,' ресечения, как описано в главе 7. Кроме того, конечные точки ксегмента нахо-,':" дятся по точкам пересечения кривой пересечения с ребрами граней, как опи-,' ' ''."- сано в главе 6. 2. Ксегменты, полученные на шаге 1, наносятся на соответствующие грани объе- .." мов А и В (рис.
Г.З). Каждый ксегмент добавляется как новое ребро соответ- " '' ствующей грани каждого объема с помощью операторов Эйлера, так чгб разделение граней учитывается автоматически. Операторы Эйлера выбирй-'";::,' ются в зависимости от расположения ксегмента относительно грани, на кото- " '.:, рую он должен быть нанесен. Есть пять возможных вариантов расположения (рис. ГА). На рис. ГА, а изображена ситуация, в которой новое ребро совпадает с существующим; здесь никаких действий не требуется.
На рис. ГА, 6 два ." ' конца нового ребра совпадают с существующими вершинами, но само ребрр' '::;. не совпадает с существуюгцими ребрами; в этом случае необходимо при-,:,' .', ' менить оператор МЕ1 На рис. ГА, е один конец нового ребра совпадает с су-::::: ществующей вершиной, а другой расположен внутри грани; в этом случае' ',, применяется оператор МЕх. На рис. ГА, г оба конца нового ребра находятся " внутри грани: в этой ситуации мы действуем операторами МЕтДД.Я и КРМН„::,.
Здесь оператор КРМН преобразует кольцо, созданное оператором МРЛАЛ;:.:::. в кольцо отверстия, принадлежащее внешнему кольцу грани. Одновременно,,; — ' он устраняет избыточную оболочку, если кольцо, которое преобразовывается . ':, в кольцо отверстия, было связано с отдельной оболочкой. На рис. ГА, д два; '!" конца нового ребра связаны с разными кольцами на грани; в этом случае при-:, меняется оператор МЕКН. Из этих объяснений мы можем заключить, что каж-.::; дый ксегмент можно нанести на соответствующую грань каждого из объемов., автоматически, если можно автоматически определить его положение по от-. ':. ношению к этой грани. Для этого необходимо проверить, где лежат конечные: . -. точки нового ребра внутри, снаружи ипи на границе грани.
Такая проверяй:; называется тестом на вхождение (т/оиг геФ). Объем л после модификации Объем В после модификации Рис. Г.З. добавление новых граней к объемам А и В ХЬ П~ Ф Группе ик Группа В Группа А! Рис. Г.б. Группы граней рис. г.б. классификация групп граней ' "'- ',; ' 4Щ~Й1няяМФ:г-:11р)эйурб(кф~фф~~~,'-'йе(!ййвй(л(1Г~4М)сайф)Й~~$фЦ к а б в в д Рис. г.4. Возможное расположение ксегментв по отношению к соответствуюиюй грани 3. Грани объема А классифицируются по их расположению относительно объема В. Иными словами, для каждой грани определяется, расположена ли она внутри, снаружи или на граничной поверхности объема В. Грани объема В классифицируются таким же образом по отношению к объему А. Классификация требует большого объема вычислений, поэтому мы будем избегать ее, если результат можно вывести из результата для соседних граней.
К счастью, группы граней одного объема могут иметь одинаковое положение по отношению к другому объему. На рис. Г.5 грани, принадлежащие к каждой из групп, имеют одно и то же положение относительно другого объема (то есть грани в группе А, находятся вне объема В, грани в группе В, находятся внутри объема А).
Эти группы также разделены новыми ребрами, полученнылти из ксегментов. Таким образом, грани, принадлежащие группе, можно определить путем обхода соседних граней, начиная с любой грани в группе, без пересечения ксребер (хе!(яез) — новых ребер, полученных из ксегментов. Будем искать грани, принадлежашие одной группе, начав обход с грани, которая заштрихована на рис. Г.5.
Сначала из всей совокупности соседних граней отбираются только те, которые не имеют общих ксребер с заштрихованной гранью. Затем процедура повторяется: каждая из отобранных ранее граней используется в качестве вторичной начальной грани, и обнаруженные на данной итерации грани добавляются к отобранному множеству.
Процесс останавливается, когда каждая грань из отобранного множества побывает в роли вторичной исходной грани. В данном примере будут отобраны грани из группы Ан После этого в качестве вторичной исходной грани будет выбрана любая нз граней, не принадлежащих к группе А,; тот же самый процесс будет повторен для нахождения граней, принадлежащих к группе Аъ Если какая-либо грань не принадлежит ни к А,, ни к Аъ то далее находятся грани группы Аз (которые не существуют в данном примере).
Такой же процесс применяется к объему В, в результате чего получаются группы граней В! и Вз (рис. Г.5). После того как грани обьемов А и В будут разделены на группы, необходимо. '.'. определить положение каждой группы граней по отношению к противоцо-' ложному объему. В качестве примера рассмотрим метод для группы А!.
Ос- тальные группы можно обрабатывать так же. Сначала произвольно выбирает- .:,'. ся одно из ксребер, образуюших внешнюю границу группы Аь н обозначается как Хк (рис. Г.б). Любая из граней группы А н имеющая Х,. одним из своих ре-,:... бер, обозначается Еи а грань объема В, деляшая ребро Х„. с Еи обозначается Ел..:,': ' Затем находятся векторы Х, и Хь внешних нормалей к граням Е„и Ел, а также -", тангенциальный вектор Т в любой точке Х«(рис. Г.б).
Тангенциальный век- ' .... тор Т имеет направление против часовой стрелки, чтобы он был согласован с, . направлением внешнего кольца 1 грани Е, при взгляде снаружи. Наконец, ",', ' классификация группы А, по отношению к объему В находится из значения ', -„ (Хк Т) Хл следующим образом. Группа А, находится вне объема В, если зто значение положительно, внутри — если значение отрицательно, и на поверх-...-': ности объема, если это значение равно нулю.
Если выясняется, что группа А ! находится на поверхности обьема В, она далее классифицируется как ОХ .- -.. БАМЕ (если Х„и Хь имеют одно и то же направление) или ОХ ОРРОБГТЖ.' . (если Х, и Хь направлены противоположно). 4. Группы граней отбираются в соответствии с конкретной булевской опера- .".' ' цией. Правила отбора групп определяет табл. Г,1.
Мы объясним, как исполь-. ' '. зовать эти правила для операции объединения, а для прочих операций они;: ' используются точно так же. Для операции обьединения табл. Г.1 показывает, .-': что нам необходимо отобрать элементы О и О(Х) в столбце «Объединеннел..'::.
Это означает, что мы должны отобрать группы объема А, находящиеся вне',,: объема В, группы объема В, находящиеся вне объелта А, и группы объема А!;- к классифицированные как ОХ БАМЕ (или группы ОХ БАМЕ объема В). Символы О(Х) и Х(О) в табл. Г.1 подразумевают, что элемент объема А соот- ..: ветствуег элементу объема В, и что данный злелтент должен быть отобран .: лишь единожды. Если мы применим это правило к группам граней па'-':; рис.
Г.5, мы выясним, что для операции объединения будут отобраны группы Ег Рг Рг б Рис. Г.9. Процедура удаления Е и Е Рис. Г. то. Создание объема пугем склеивания А г и 'Вг. Правила:для операций разности и.'пересечения вы можете проверить применяя их к групъам граней на рис. Г.5. Таблицд Г.1. Группы граней, отбираемые для булевских операций 5.