Какой булевой операции 3d не существует в сапр программах

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

Основные понятия. Возможности операции

Типы булевой операции

Существует три типа булевой операции: • Сложение . Результатом выполнения операции является тело, объединяющее в себе все части тел, участвующих в операции. • Вычитани е. Результатом выполнения операции является тело, полученное вычитание одного тела из другого. • Пересечение . Результатом выполнения операции является тело, полученное пересечением тел, участвующих в операции и состоящее из общих частей этих тел.

Операнды булевой операции

Тела, участвующие в булевой операции, называются “Операндами” булевой операции. Они делятся на первые и вторые операнды. Тела, над которыми выполняется преобразования, называются “Первыми операндами” булевой операции. Тела, с помощью которых выполняется преобразование, называются “Вторыми операндами”.

САПР Компас-3D. Булевы операции

В зависимости от того, в качестве какого операнда были выбраны тела, получаются различные результаты булевой операции. Булева операция может также выполняться и между набором тел, часть которых может быть выбрана как первые операнды, а другие тела как вторые. В процессе выполнения такой операции происходит объединение всех первых операндов в одно тело и всех вторых операндов в другое тело. Затем

Булева операция выполняется выбранная булева операция между этими телами. В результате получается одно многокомпонентное тело.

Результаты булевых операций

В качестве операндов могут быть выбраны как твёрдые, так и листовые тела. Возможность выбора различных комбинаций операндов и задание параметров позволяет формировать различные результаты булевых операций. Следует заметить, что в некоторых ситуациях, при сочетании определённых типов операндов в булевых операциях, невозможно получить результат.

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

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

Интерпретация листового тела Листовое тело, использующееся в булевой операции в качестве операнда, может быть определено в команде как непосредственно листовое тело, либо как полупространство. В зависимости от интерпретации и того, в качестве какого операнда выбирается тело, будут получаться разные результаты. Если операнд — листовое тело был определён как полупространство, то в сцене будут отображены векторы нормалей к поверхности листового тела. Направление этих векторов указывает, какое полупространство выбрано и повлияет на результат выполнения операции.

Булевы операции

Трёхмерное моделирование
Операция “Сложение” Результаты булевой операции “Сложение” при сочетании различных типов операндов:

Первый операнд Второй операнд Результат
твёрдое тело твёрдое тело твёрдое тело
листовое тело твёрдое тело листовое тело
(полупространство)
твёрдое тело листовое тело твёрдое тело
(полупространство)
листовое тело листовое тело листовое тело
(полупространство) (полупространство) (создание углов)
листовое тело листовое тело листовое тело
(сшивка)

Твёрдое тело + Твёрдое тело Если в качестве первого и второго операнда используются твёрдые тела, то в результате выполнения операции будет сформировано одно тело, объединяющее в себе все части тел, участвующих в операции. Листовое тело + Твёрдое тело В результате выполнения операции будет сформировано листовое тело, переставляющее собой “продавливание” листового тела частью твёрдого тела. В зависимости от выбранного полупространства формируется “продавливание” либо нижней, либо верхней части. Следует отметить, что листовое тело должно полностью пересекать твёрдое тело.

Булева операция Твёрдое тело + Листовое тело Если в качестве первого операнда было выбрано твёрдое тело, а в качестве второго – листовое, то в результате выполнения операции “Сложение” по умолчанию создается твёрдое тело. Грани листового тела будут формировать дополнительный объем для твердого тела.

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

При определённом направлении нормалей может получиться некорректное результирующее тело. В этом случае нужно выбрать другое полупространство в параметре “Интерпретация операнда”. Листовое тело + Листовое тело В результате сложения двух листовых тел получается листовое тело. Для успешного создания операции необходимо, чтобы грани листовых тел либо имели общее ребро, либо совпадали на определённом участке. Эта возможность является схожей с операции “Сшивка”. Отличие

Читайте также:
Программа расширения оболочки шифрования не работает

Трёхмерное моделирование
заключается в том, что булева операция “Сложение” не удаляет зазоры между телами, а “Сшивка” пытается создать новую непрерывную поверхность. Операция “Вычитание” Результаты булевой операции “Вычитание” при сочетании различных типов операндов:

Первый операнд Второй операнд Результат
твёрдое тело твёрдое тело твёрдое тело
листовое тело твёрдое тело листовое тело
твёрдое тело листовое тело твёрдое тело
(полупространство)
листовое тело листовое тело листовое тело
(полупространство) (полупространство) (создание углов)

Твёрдое тело — Твёрдое тело Результатом выполнения булевой операции “Вычитание” одного твёрдого тела из другого будет тело, переставляющее собой первый операнд, из которого удаляется объём второго операнда. При создании булевой операции “Вычитание” не допускается такой ситуации, когда результирующее тело будет иметь области со стенками нулевой толщины. При этом нарушается топология модели.

Булева операция Листовое тело — Твёрдое тело При вычитании твёрдого тела из листового, в листовом теле будет создано отверстие по форме второго операнда – твёрдого тела. Твёрдое тело — Листовое тело (полупространство) В результате вычитания листового тела из твёрдого остаётся часть твёрдого тела, отсечённая листовым телом. При этом листовое тело должно быть определено как полупространство. В зависимости от выбранного полупространства остается либо верхняя, либо нижняя часть твёрдого тела. Этот тип булевой операции является аналогом операции “Отсечение”.

Трёхмерное моделирование
Операция “Пересечение” Результаты булевой операции “Пересечение” при сочетании различных типов операндов:

Первый операнд Второй операнд Результат
твёрдое тело твёрдое тело твёрдое тело
листовое тело твёрдое тело листовое тело
листовое тело твёрдое тело твёрдое тело
(полупространство)
твёрдое тело листовое тело твёрдое тело
(полупространство)
листовое тело листовое тело листовое тело
(полупространство) (полупространство) (создание углов)

Твёрдое тело ∩ Твёрдое тело Результатом пересечения твёрдых тел является тело, представляющее собой общую часть всех операндов. Листовое тело (полупространство) ∩ Листовое тело (полупространство) Если листовые тела совпадают на определённом участке, то в результате выполнения булевой операции “Пересечение” остается общая их часть.

Булева операция Листовое тело ∩ Твёрдое тело Если в качестве первого операнда было выбрано листовое тело, а в качестве второго – твёрдое, то в результате выполнения булевой операции “Пересечение” будет сформировано листовое тело, представляющее собой общую часть двух операндов. Твёрдое тело ∩ Листовое тело (полупространство) В результате выполнения булевой операции “Пересечение” листового тела, интерпретированного как полупространство, и твёрдого тела останется часть твёрдого тела, отсечённая листовым телом.

Результат выполнения этой операции похож на результат выполнения булевой операции “Вычитания” листового тела (полупространства) из твёрдого тела. Отличие в том, что в результате выполнения операции “Пересечение” остаётся другая часть твёрдого тела. При этом порядок выбора операндов не влияет на результат.

Булевы операции между листовыми телами (полупространствами) Одной из возможностей применения булевых операций между листовыми телами является создание углов. Для этого листовые тела в команде должны пересекаться и быть определены как полупространства. В зависимости от направления нормалей к поверхностям листовых тел и типа применяемой булевой операции получаются различные результирующие листовые тела. При этом сохраняются направления нормалей на результирующем теле.

Источник: studfile.net

Применение булевых операций для построения сложных объектов

Целью работы является приобретение навыков применения булевых операции при построении сложных объектов, используя функции графической библиотеки OpenGL.

5.7.2 Понятие и виды булевых операций

Как и для многих терминов компьютерной графики, термин «булева» происходит от имени человека, который ввел это понятие (в данном случае это Джордж Буль). Булевыми операциями называют операции объединения, пересечения и вычитания тел, так как они выполняют одноименные операции над внутренними объемами тел.

Булеву операцию объединения тел будем обозначать формулой: Р = A U В, где А и В — исходные тела, Р — результирующее тело. Булеву операцию пересечения тел будем обозначать формулой: Р = А А В. Булеву операцию вычитания тел будем обозначать формулой: Р = А — В..

Результатом операции объединения двух тел является тело, которое содержит точки, принадлежащие внутреннему объему или первого, или второго тела. Результатом операции пересечения двух тел является тело, которое содержит точки, принадлежащие внутреннему объему как первого, так и второго тела. Результатом операции вычитания двух тел является тело, которое содержит точки, принадлежащие внутреннему объему первого, но не принадлежащие внутреннему объему второго тела.

Рассмотрим булеву операцию объединения тел. Кратко суть операции молено описать следующим образом: нужно найти линии пересечения граней тел, удалить ту часть первого тела, которая попала внутрь второго тела и ту часть второго тела, которая попала внутрь первого тела, а из всего остального построить новое тело.

Операцию условно можно разбить на три этапа. На первом этапе строятся линии пересечения поверхностей граней и на их базе — новые ребра. Построенные новые ребра будем называть ребрами пересечения, а ребра тел будут называться старыми ребрами. На втором этапе определяем точки пересечения новых ребер со старыми ребрами и в этих точках разрежем старые ребра на несколько ребер.

На третьем папе операции перестроим циклы пересекшихся граней. После этого добавим к пересекшимся граням тел грани, типологически связанные ними.

Читайте также:
Как назвать спа программу

На рисунке 5.25 показан результат операции объединения сферы и куба.

Результат операции объединения

Рисунок 5.25 — Результат операции объединения

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

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

Ребра пересечения входят в перестроенные циклы граней первого тола с положительным флагом, а в перестроенные циклы граней второго тела — с отрицательным флагом (в объединении тел флаги ребер пересечения в циклах имеют противоположное значение). Все остальные действия над гранями обоих тел в обеих операциях одинаковы. На рисунке 5.26 изображен результат операции пересечения сферы и куба.

Результат операции пересечения

Рисунок 5.26 — Результат операции пересечения

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

Булева операция вычитания тел сводится к булевой операции пересечения уменьшаемого тела и вывернутого наизнанку вычитаемого тела. Вывернутое наизнанку тело мы получим из исходного тела путем переориентации направлений нормалей граней и направлений циклов граней.

Переориентация направления нормали грани производится изменением признака совпадения нормали поверхности и нормали ее грани. Переориентация направления цикла грани производится перестроением списка ребер (изменением на обратный порядок следования ребер в списке) и заменой на противоположные ребра в списках.

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

Результат операции вычитания

Рисунок 5.27 — Результат операции вычитания: сверху — вычитание куба из сферы, снизу — сферы из куба

Для реализации булевых операций в OpenGl используется буфер трафарета. Выполнение теста трафарета разрешается командой glEnable с аргументом GL_STENCIL_TEST. Команда glStencilFunc отвечает за сравнение, а команда glStencilop позволяет определить действия, базирующиеся на результате проверки трафарета. Программа демонстрирует, как использовать буфер трафарета для реализации логических операций с твердыми телами. Рисование фигур вынесено в отдельные процедуры, для манипуляций с ними введены еще две процедуры.

По конструкции, программа демонстрирующая работу буфера трафарета, а соответственно и булевы операции, будет довольна проста. Состоять она будет из одного RadioGroup, в котором будут отображаться названия булевых операций, RadioGroup в котором пользователь сможет выбрать вокруг какой оси вращать сцену и двух «кнопок» BitBtn, с помощью которых предо ставляется выбор направления вращения получившейся в результате булевой операции фигуры. Рассмотрим структуру приложения более подробно.

Создайте в среде программирования Delphi новый проект. Переместите в каталог с программой файл DGLUT.pas.

В разделе uses программы подключаем библиотеку OpenGL:

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OpenGL, StdCtrls;

В разделе private инициализировать следующие переменные и процедуры:

Подключаем библиотеку DGLUT и введем процедурный тип:

Добавим на форму еще один компонент RadioGroup. В свойстве Caption впишем «Вращать вокруг оси». В Items вписываем X, Y, Z в отдельных строках.

Добавить на форму два компонента BitBtn взятых с вкладки Additional, выбрать для них желаемые пиктограммы активировав свойство Glyph в Object Inspector и инициализировать события OnClick двойным щелчком мыши по данным компонентам, после чего вписать код: procedure TForml.BitBtnlClick(Sender: TObject);

ry:=ry-5.0; // Вращаем сцену по часовой стрелке end;

procedure TForml .BitBtn2Click(Sender: TObject);

ry:=ry+5.0; // Вращаем сцену против часовой стрелки end;

Экранная форма создаваемого приложения

Рисунок 5.28 — Экранная форма создаваемого приложения

Зададим формат пиксела:

procedure TForml .SetDCPixelFormat;

FillChar(pfd, SizeOf(pfd), 0);

pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or

PFD_DOUBLEBUFFER; // множество битовых флагов,определяющих устройство и интерфейс

Перейдите к конструктору и сделайте двойной щелчок клавишей мыши на форме — создастся функция обработчика события загрузки формы FormCreate. В ней мы поместим следующий код:

procedure TForml.FormCreate(Sender: TObject);

lightposition : Array [0..3] of GLfloat = (-3.0, 3.0, 3.0, 0.0 );

DC := GetDC (Handle);

glEnable(GL_COLOR_M ATERI AL);

glClearColor(1.0, 1.0, 1.0, 0.0);

Инициализировать обработчики событий OnDestroy, OnPaint, OnResize. Для этого необходимо в Object Inspector перейти на вкладку Events, где щелкнуть по вышеперечисленным событиям два раза.

В обработчики событий добавить следующий код:

procedure TForml.FormDestroy(Sender: TObject);

procedure TForml.FormPaint(Sender: TObject);

glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT or GL STENCIL BUFFER BIT); // очистка буфера цвета

if radiobutton 1.Checked then x:=1.0;

if radiobutton2.Checked then y:=1.0;

if radiobutton3.Checked then z:=1.0;

glRotatef (ry, x, y, z);

glTranslatef (0.0, 0.0, 0.0);

//Объединение А и В

if RadioGroupl.ItemIndex=0 then

if RadioGroup 1 .Itemlndex= 1 then

inside(A, B, GLFRONT, GL.NOTEQUAL);

Читайте также:
Прочесть переписку своей жертвы при помощи программы которая работает через удаленный сервер

inside(B, A, GL-BACK, GL.EQUAL);

//Пересечение А и В

if RadioGroup 1 .Itemlndex=2 then begin

inside(A, В, GL-BACK, GL.NOTEQUAL);

inside(B, A, GL_BACK, GL_NOTEQUAL);

if RadioGroupl .Itemlndex=3 then

inside(B, A, GL_FRONT, GL_NOTEQUAL);

inside(A, B, GL_BACK, GL.EQUAL);

procedure TForml.FormResize(Sender: TObject);

glViewport(0, 0, ClientWidth, ClientHeight);

glFrustum (-1, 1, -1, 1, 2, 9);

glTranslatef(O.O, 0.0, -5.0);

glRotatef(30.0, 1.0, 0.0, 0.0);

glRotatef(70.0, 0.0, 1.0, 0.0);

InvalidateRect(Handle, nil, False);

Следующие процедуры добавим самостоятельно:

// процедура, служащая для рисования фигуры А

glLoadName(2); И заносим фигуру в стек имен

glTranslatef(0.0, 0.0, 0.0);

glColor3f(1.0, 1.0, 0.0);

glutSolidSphere(1.03, 20, 20); И сфера с диаметром 1.03 и детализацией «каркаса» 20×20 ребер

И процедура, служащая для рисования фигуры В

glLoadName(l); // заносим фигуру в стек имен

glTranslatef(O.O, 0.0, 0.0);

glColor3f (1.0, 0.0, 0.0);

glutSolidCube (1.6); // куб размером 1.6 х 1.6 х 1.6

// Вспомогательная процедура, предназначена для регулирования содержимого буфера глубины, фигура выводится только в этот буфер

procedure fixup(A : proctype);

glColorMask(FALSE, FALSE, FALSE, FALSE);

// Процедура предназначена для получения части одной фигуры, находящейся внутри другой

procedure inside(A, В : proctype; face, test: GLenum);

glColorMask(FALSE, FALSE, FALSE, FALSE);

glStencilFunc(GL_ALWAYS, 0, 0);

glStencilOp(GL_KEEP, GL_KEEP, GLJNCR);

glStencilOp(GL_KEEP, GL.KEEP, GL.DECR);

glColorMask(TRUE, TRUE, TRUE, TRUE);

glStencilFunc(test, 0, 1);

5.7.4 Задание на выполнение работы

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

  • — перечень используемых команд;
  • — экранные формы;
  • — листинг программы.

5.7.5 Контрольные вопросы

В честь какого ученого булевы операции получили свое название?

Суть булевой операции объединения.

Суть булевой операции пересечения.

Суть булевой операции вычитания.

Что такое буфер трафарета?

Источник: bstudy.net

Какие булевы операции используются в CAD-моделировании?

В AutoCAD 3D определены три логические операции, которые приведены ниже: Объединение. Вычесть. Пересекать.

Каковы 3 типа булевых операций?

Они связывают ваши поисковые слова вместе, чтобы сузить или расширить набор результатов. Три основных логических оператора: И, ИЛИ и НЕ.

Что такое логическое значение в моделировании?

Булева модель строится с использованием логических переменных в одном из двух бинарных состояний — «Включено» (1) или «Выключено» (0) — которые представляют активацию или ингибирование гена соответственно. Каждая переменная представляет собой ген, включенный в GRN, на следующее состояние которого влияет логическая функция.

Что такое логическая операция в 3D-моделировании?

Булева операция — одна из фундаментальных операций 3D-моделирования. Он объединяет две или более объемных фигур (скажем, A и B), проверяя, лежит ли точка x внутри каждого твердого тела.

Что такое 4 логических оператора?

Логические операторы — это простые слова (И, ИЛИ, НЕ или И НЕ), используемые в качестве союзов для объединения или исключения ключевых слов в поиске, что приводит к более точным и продуктивным результатам. Это должно сэкономить время и силы за счет устранения неуместных попаданий, которые необходимо сканировать перед удалением.

ЭТО ИНТЕРЕСНО: Как создать модель в SketchUp?

Какая операция является булевой операцией?

1. Какие три булевы операции? Объединение, вычитание и пересечение.

Что такое 5 логических оператора?

5 логических операторов, которые вам нужно знать

  • И. И сузит результаты поиска, чтобы включить только релевантные результаты, которые содержат необходимые ключевые слова. …
  • ИЛИ. …
  • НЕТ. …
  • Кавычки » » …
  • Скобки ( ) …
  • Boolean — это столько же искусство, сколько и наука. …
  • Практика ведет к совершенству.

Что такое 6 логических оператора?

25 ноября 2018 г. 232246. Булевыми операторами являются слова «И», «ИЛИ» и «НЕ». При использовании в библиотечных базах данных (введенных между вашими ключевыми словами) они могут сделать каждый поиск более точным и сэкономить ваше время!

Что является примером логического значения?

Как булева модель помогает в поиске информации?

Он используется во многих ИК-системах и по сей день. ЗБИ основан на булевой логике и классической теории множеств в том смысле, что и документы, в которых нужно искать, и запрос пользователя представляются как наборы терминов (модель мешка слов). Поиск основан на том, содержат ли документы термины запроса.

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

10. Какая модель используется для обозначения булевых функций? Объяснение: Модель уровня вентиля используется для обозначения логических функций, а симуляция рассматривает только поведение вентиля.

ЭТО ИНТЕРЕСНО: Как изменить прозрачность изображения в AutoCAD?

Почему логические операции важны в 3D-моделировании?

В 3D-моделировании под булевыми операциями мы понимаем создание пересечений и объединений объектов, а также вычитание объектов друг из друга. Все это операции над множествами, знакомые учащимся по диаграммам Венна.

Что такое булева операция в анимации?

Логические объекты работают по принципу булевой алгебры и используются для создания составных объектов путем объединения двух или более примитивов.

Почему моя логическая разница не удалась?

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

Источник: powerpointmaniac.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru