Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СКТ - 5,6сем.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
8.67 Mб
Скачать

Основные понятия машинной графики

Машинная графика – это раздел Computer Science, занимающийся задачами ввода, вывода, передачей, хранением информации, представленной в графической форме. Базой для развития машинной графики является развитие специальных видов аппаратуры.

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

Типичная программная система, работающая с машинной графикой, может быть разбита на две части:

  1. Базовая геометрическая система, которая создается как независимая от предметной области и конкретных графических устройств языковая среда.

  2. Объектная (прикладная) часть системы.

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

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

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

Базовая графическая система содержит языковые средства, с помощью которых порождаются примитивы вывода, т.е. простейшие элементы, из которых составляется любое изображение. В базовой графической системе должны быть функции устанавливающие атрибуты примитивов вывода, т.е. свойства внешнего вида (цвет линий, толщина, тип линий и т.д.). В состав базовой графической системы входят также функции управления устройствами и самой системой. В развитой базовой системе должны предусматриваться функции сегментирования изображения. Сегмент изображения – это поименованная совокупность примитивов, с которой можно работать как с самостоятельной единицей. Атрибуты примитивов вывода являются атрибутами статическими, т.е. нельзя изменить атрибут созданного примитива вывода. Сегменты могут иметь динамические атрибуты, т.е. свойства, которые можно менять в период существования сегмента. К таким атрибутам относят атрибут видимости, атрибут выделености. К динамическим атрибутам можно отнести список зрительных поверхностей, связанных с сегментом, атрибут преобразования образов, т.е. свойства, определяющие местоположение, ориентацию и размеры на зрительной поверхности. Эти преобразования задаются либо матрицей преобразования, либо суперпозицией простейших преобразований типа: масштабирование, поворот, перенос. Каждое преобразование задается набором своих параметров. В конечном итоге суперпозиция преобразований задается матрицей:

– матрица масштабирования

– матрица поворота

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

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

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

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

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

Для моделей 3d-объектов должны выполняться общие свойства:

  1.  однородность, т.е. моделируемое тело предполагается состоящим из однородного материала.

  2. жесткость, т.е. геометрические свойства модели не должны зависеть от положения и ориентации в пространстве.

Набор операций над моделями должен обладать определенными свойствами:

  1. свойство замкнутости, т.е. при рассмотрении модели некоторого класса операции над ней не должны выходить из этого класса.

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

  3. непротиворечивость модели, т.е. о любой точке пространства можно сказать – принадлежит она или нет моделируемому объекту.