Создание изображений. Графические примитивы. Графические примитивы и работа с ними Управление дисплеем и дисплейный процессор

Ошибки 

Графический примитив

Графический примитив

Графический примитив - простейший геометрический объект, отображаемый на экране дисплея или на рабочем поле графопостроителя: точка, отрезок прямой, дуга окружности или эллипса, прямоугольник и т.п.

По-английски: Graphic primitive

Финансовый словарь Финам .


Смотреть что такое "Графический примитив" в других словарях:

    графический примитив - Элементарные объекты программ рисования (отдельные окружности, линии, прямоугольники, кривые и т.д.), из которых складывается изображение. Тематики информационные технологии в целом EN drawing entityGDPgraphics draw… …

    выходной (графический) примитив - элемент отображения — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом Синонимы элемент отображения EN output primitive … Справочник технического переводчика

    Примитив - Абстрактное независимое от реализации представление взаимодействий между пользователем услуг и поставщиком услуг Источник: ГОСТ 28696 90: Системы обработки информации. Передача данн … Словарь-справочник терминов нормативно-технической документации

    Графический конвейер аппаратно программный комплекс визуализации трёхмерной графики. Содержание 1 Элементы трехмерной сцены 1.1 Аппаратные средства 1.2 Программные интерфейсы … Википедия

    примитив вывода - Базовый графический элемент, который может использоваться для построения изображения. Примечание Примитивами вывода могут быть, например, точка, отрезок линии, последовательность символов. [ГОСТ 27459 87] Тематики машинная графика EN output… … Справочник технического переводчика

    Примитив вывода - 17. Примитив вывода Output primitive Базовый графический элемент, который может использоваться для построения изображения. Примечание. Примитивами вывода могут быть, например, точка, отрезок линии, последовательность символов

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

Использование примитивов в редакторах

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

Что такое пиксель?

Пиксель — это графический примитив, который является точкой света. Это всего лишь одна маленькая точка, часть растрового изображения. Хотя он не имеет структуры, но, безусловно, является строительным блоком. Следовательно, пиксель — графический примитив. Разрешение ЭЛТ-мониторов связано с размером этой точки и ее диаметром, которое может меняться. Отношение расстояния между центрами двух соседних горизонтальных пикселей к расстоянию между вертикальными называется соотношением пикселей. Оно должно учитываться в алгоритмах, генерирующих изображения.

Дисплейный файл и кадровый буфер

Графическим примитивом является также программное обеспечение, при помощи которого на экран выводится определенное изображение. Один из них — дисплейный файл. Он является массивом некоррелированных данных или набором команд, которые необходимы для правильной отрисовки изображения на экране. Массивы заполняются из данных списка, хранящегося в памяти. В результате их обработки на ЭЛТ-мониторе создается картинка, состоящая из пикселей разного цвета. Кадровым буфером называют устройство для хранения и вывода видео на экран. Обычно это устройство или вид памяти, которое хранит несколько кадров видеоизображения. Изображение находится в памяти в виде массива данных, где записаны последовательные цветовые значения каждого пикселя.

Управление дисплеем и дисплейный процессор

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

Графические редакторы

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

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

Векторная графика использует геометрические примитивы. Что такое графический примитив в векторной графике, уже говорилось выше. Это точки, линии, кривые и многоугольники (или полигоны) или векторные изображения. Такие фигуры основаны на математических выражениях, для представления изображений в компьютерной графике. Конвертировать векторную графику в растровую довольно просто, но из растровой в векторную гораздо сложнее. Некоторые программы пытаются это сделать. В дополнение к статической графике, есть анимация и программное обеспечение для редактирования видео. Компьютерная графика также может использоваться другим программным обеспечением для редактирования, таким как Adobe Photoshop, Pizap, Microsoft Publisher, Picasa и т. д. Еще один вариант — это программы для анимации, и видеоредакторы, такое как Windows Movie Maker.

Точки и линии в графике

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

Линия как примитив

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

Генерация линий

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

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

Цифровой дифференциальный анализатор

Другой алгоритм - цифровой дифференциальный анализатор - представляет собой алгоритм генерации отрезка, основанный на вычислении либо dy, либо dx. Для этого нужно спроецировать линию на единичные интервалы в одной координате и определить соответствующие значения целого числа, ближайшие к пути линии, для другой координаты. Алгоритм принимает в качестве входных данных две позиции пикселей на концах отрезка. Горизонтальные и вертикальные различия между позициями конечных точек назначаются параметрам dx и dy. Разница с большей величиной определяет приращение шагов параметра. Начиная с положения пикселя определяется смещение, необходимое на каждом шаге, для создания следующего положения пикселя вдоль линии.

Полигоны или многоугольники

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

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

Заполнение полигонов

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

1. Графические примитивы.

Графические примитивы это заранее определенные элементы, которые можно поместить в чертеж при помощи одной команды. Каждый графический примитив формируется на основании геометрического описания объекта.
Примитивы (табл.№1.) можно классифицировать:

  • односложные и составные;
  • плоские и объемные (3d).

Таблица №1

Имя примитивы

Команда

Линия (Отрезок)

Линия конструкции (Прямая)

Полилиния

Прямоугольник

Полигон (Многоугольник)

Овал(Кольцо)

Мультилиния

3DПолилиния

Конус (Дубль)

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

2. Свойства примитивов.

Примитивы имеют следующие свойства:
- Цвет (color);
- Тип линий (linetype);
- Масштаб типа линий;
- Принадлежность слою;
- Уровень и высота (elevation).

3. Операции над примитивами

Над примитивами можно выполнять следующие операции: Создавать, Удалять, Устанавливать свойства, Получать копии, Перемещать, Поворачивать, Отображать зеркально, Масштабировать, Штриховать, Закрашивать и др.

4. Команды построения графических примитивов

Рассмотрим односложные графические примитивы. Графический примитив может быть отрисован следующими способами:

  • С помощью команд вводимых их пункта строки меню Рисовать системы AutoCAD.
  • С помощью пиктограмм панели инструментов, выбирая необходимую из них щелканьем ЛКМ.
  • С помощью ввода команд с командной строки.

4.1. Точка

Точка (Pоint) - это один из простейших примитивов системы AutoCAD, который характеризуется тремя пространственными координатами X,Y и Z , а также атрибутами - принадлежность слою, цвет и высота.
Для помещения точки в чертеже вводим команду Рисовать/ Точка/ Простая точка либо выбираем с помощью мыши соответствующую пиктограмму на панели инструментов.

При этом с помощью мишки курсором задаются координаты токи которые фиксируются в строке состояния.
В целях фиксации объектов точки могут выполнять функции "узлов".
На экране точки можно изображать 20 различными знаками каждому из которых соответствует определенный числовой код (0-4, 32-36, 64-68, 96-100).

Стиль точки задается с помощью команд Рисовать/ Точка/ Множественная и далее Формат/ Стиль отметок при этом появляется меню представленное на рис. 2.1.

Рисунок 2.1. - Стиль точки

0 · - точка в указанном месте;
1 - ничего;
2 + - прямой крест;
3 X - косой крест;
4 1 - вертикальная линия.

Если к данному коду добавить:

32 - рисуется окружность вокруг точки;
64 - рисуется квадрат вокруг точки;
96 - рисуется окружность и квадрат вокруг точки;

Цвет можно задать с помощью команды Формат/Цвет при этом появляется меню представленное на рис. 2.2.

4.2. Луч (Ray).

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

Команда рисования луча:

Command: Ray
From point: (Из точки:)
Through point: (Сквозь точку:)
Through point:
Through point:
Through

Координаты точек можно ввести с клавиатуры либо с помощью мыши. При этом получим изображение представленное на рис.2.2.


Рисунок 2.2. Рисование луча

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

4.3. Линия (Line).

Линия - это часть прямой линии, задаваемая двумя крайними точками с нулевой шириной (1 пиксель). Линия является наиболее фундаментальным примитивом для любого чертежа. Для его обрисовки вводим команду Рисовать/ Линия. Линию, как любой др. примитив можно нарисовать путем выбора с помощью мыши соответствующей пиктограммы на панели инструментов.
Команда рисования линии:
Command: Line
From point:
To point:

Координаты точек можно ввести с клавиатуры либо с помощью мыши. При этом получим изображение представленное на рис.2.3.


Рисунок 2.3. Рисование линии

4.4. Мультилиния (Mline)

Мультилиния двумерная ломаная линия состоящая из нескольких параллельных отрезков (от 1 до 16) каждый из которых может иметь свои атрибуты.

Этот примитив в системе AutoCAD рисуется либо командой меню Рисовать/ Мультилиния Формат/ Стиль Мультилиний (см. рис. 2.4), либо командой вводимой с командной строки:
Command: Justification\Scale\Style\ указываются координаты первой точки;
J - установка режима выравнивания;
S - установка масштаба (ширины) мультилинии;
ST - выбор стиля мультилинии,
Command: To point указываются координаты точек.


Рисунок 2.4. - Мультилиния

4.5. Линия конструкции (Xline).

Прямая. Линия конструкции линия с концами уходящими в бесконечность. Этот примитив в системе AutoCAD рисуется командой Рисовать/ Линия конструкции и далее м.б. задан стиль линии Формат/ Стиль линий (см. рис. 2.5).

4.6. Полигон (Polygon Многоугольник).

Многоугольник рисуется с помощью команды Рисовать/ Полигон (см. рис. 2.6). Для ее выполнения необходимо задать опции:

  • количество углов от 3 до 1024;
  • координаты центра (можно курсором);
  • вписанный либо описанный в окружность (I/C).


Рисунок 2.5. - Линия конструкции


Рисунок 2.6. - Полигон

4.7 Прямоугольник (Rectangle)

Прямоугольник рисуется:

Команды rectangle, вводимой с командной строки.


Рисунок 2.7. - Прямоугольник

Формат команды rectangle, вводимой с командной строки.

Command: _rectangle
: указываются координаты угловой точки прямоугольника;
Point or option keyword required .
Опции: C - указать размер скоса углов прямоугольника (фаска);
F - указать радиус округления углов;
T - указать толщину линий;
W - указать линий.

Например, выполнение нижеприведенной команды рисует прямоугольник рис. 2.8.

Command: rectangle
Chamfer/Elevation/Fillet/Thickness/Width/: c

First chamfer distance for rectangles <2.0000>: 10

Second chamfer distance for rectangles <2.0000>: 10
Chamfer/Elevation/Fillet/Thickness/Width/: e
Elevation for rectangles <0.0000>: 40
Chamfer/Elevation/Fillet/Thickness/Width/: f
Fillet radius for rectangles <10.0000>: 5
Chamfer/Elevation/Fillet/Thickness/Width/:
Other corner: указываются координаты противоположной точки прямоугольника.


Рисунок 2.8. – Прямоугольник с опциями

4.8. Дуга (Arc)

Дуга - часть окружности, которая геометрически определяется центром, радиусом и двумя центральными углами. Существует более 10 способов построения дуги (рис. 2.9). При выполнении команды в диалоге предлагается выбрать способ построения из экранного меню, один из способов предлагается по умолчанию (3-точки) (рис. 2.10).



Рисунок 2.10. - Дуга

4.9. Круг (Circle)

Круг - часть плоскости ограниченная окружностью. Для построения круга используется команда Circle при этом м.б. использовано шесть способов построения (см. рис. 2.9).

Выполнение команды, приведенной ниже рисует круг (см. рис. 2.10) .
Command: circle
3P/2P/TTR/

: 100,100
Diameter/: 100

Command:


Рисунок 2.10. - Круг


Рисунок 2.9. – Диалоговое окно

4.10 Эллипс (Ellipse)

Эллипс рисуется:

С помощью команды Рисовать / Эллипс (см. рис. 2.11, рис.2.12);
- пиктограммы;

Команды ellipse , вводимой с командной строки.


Рисунок 2.11. – Диалоговое окно


Рисунок 2.12 Эллипс


Рисунок 2.13 Эллипс

Эллипс в зависимости от выбранных опций в команде можно построить четырьмя способами:

По центру и двум полуосям;
- по оси и полуоси;
- по оси и углу поворота воображаемого круга относительно оси построений;
- по центру, длине полуоси и углу поворота воображаемого круга относительно оси построений.

Выполнение команды, приведенной ниже рисует эллипс (см. рис. 2.13) .

Command: _ellipse
Arc/Center/: c
Center of ellipse: 100,100
Axis endpoint: 100
/Rotation: 45

4.11. Полилиния (Pline)

Полилиния - ломаная линия. Этот примитив в AutoCADе рисуется командой Рисовать/ Полилиния и далее м.б. задан стиль линии Формат/ Стиль линии (см. рис. 2.14).

Command: Pline
From point:
Current line-width is 0.0000 (Текущая ширина линии)
Arc/Close/Halfwidth/Length/Undo/Width/:

Рассмотрим опции:

Arc (Дуга) A – переход в режим рисования дуг;
Close (Замкни) C - Замкнуть полилинию;
Halfwidth (Полуширина) H- Полуширина текущего сегмента;
Length (Длина) L –Длина последующего сегмента;
Undo (Отмени) U - отмена последнего сегмента;
Width (Ширина) W –ширина последующего отрезка;
:<Конечная точка лини>


Рисунок 2.14 – Полилиния

4.12. Фигура (Solid)

Фигура - это часть плоскости ограниченная четырехугольником (треугольником) . Область может быть закрашенной или не закрашенной в зависимости от значения системной переменной FILLMODE (1-закраска включена, 0-отключена). Этот примитив в системе AutoCAD рисуется командой ФИГУРА (solid), с помощью четырех точек, две из них могут совпадать, последовательность точек влияет на вид фигуры. Команда дает возможность вычерчивать сплошные области путем ввода их как четырехугольных или треугольных секций.

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

Включить режим закраски
Command:Fill
OFF/ON : ON
Command: Solid
First point: 100,200
Second point: 200,200
Third point: 150,250
Fourth point:
Third point: 100,200
Fourth point: 200,200
Third point: 100,100
Fourth point: 200,100


Рисунок 2.15. - Фигура

4.13. Кольцо (Donut)

С помощью команды donut введенной с командной строки можно построить кольцо.

Пример команды donut : Command: donut
Inside diameter <10.0000>: Second point:
Outside diameter <20.0000>: Second point:
Center of doughnut:


Рисунок 2.16 Кольцо


Рисунок 2.17 Эскиз

4.14. Эскиз (Sktch)

С помощью команды sktch можно рисовать эскизные линии или линии выполненные как бы от руки (реки на картах и т.д.). Перед использованием команды необходимо отключить режимы ORTO (кл.F8) и шаг (кл.F9).

Пример команды sktch :
Command: sketch
Record increment <1.0000>: (Приращение)

4.15. Штриховка

Штриховка замкнутых областей выполняется с помощью команды Рисовать/Насечка либо клавиши панели инструментов При этом в открывшемся диалоговом окне (рис. 2.18).

необходимо:

Задать шаблон штриховки (клавишей Шаблон);
- масштаб;
- угол поворота штриховых линий;
- выбрать точки (ЛК и ПК мыши внутри замкнутой области штрихуемого объекта)
- во вновь открывшемся диалоговом окне щелкнуть по клавише Применить


Рисунок 2.18. Диалоговое окно Граничная штриховка

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

К группе контурных графических примитивов относятся функции:

void far line(int x1,int y1,int x2,int y2);

void far linerel(int dx,int dy);

void far lineto(int x,int y);

void far rectangle(int left,int top,int right,intbottom);

void far drawpoly(int num_points,int far *poly_points);

void far circle(int x,int y,int radius);

void far arc(int x,int y,int start_angle,int end_angle,int radius);

void far ellipse(int x,int y, int start_angle,int end_angle,int x_radius,int y_radius);

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

Функции line, linerel и lineto соединяют две точки плоскости отрезком прямой. Для первой обе соединяемые точки указываются явно своими координатами. Функции linerel и lineto в качестве первой точки используют текущую графическую позицию CP, а вторую выбирают аналогично функциям moverel и moveto, т. е. через приращения координат или по явному указанию. Все три функции пользуются системой координат графического окна. Однако им можно передать координаты любых точек, даже лежащих за пределами страницы. Функция graphresult не сообщает об ошибке, а соединяющая линия проводится правильно. Если для окна установлен режим отсечения, то части линии, выходящие за пределы окна, не заносятся в видеопамять.

Функция rectangle рисует на странице видеопамяти контур прямоугольника по указанным координатам левого верхнего и правого нижнего угла.

Функция drawpoly рисует ломаную линию, соединяя точки на плоскости. В первом аргументе передается количество таких точек, а второй указывает на массив целых чисел. Каждая пара чисел из этого массива интерпретируется как пара координат (x, y) очередной точки. Для того чтобы нарисовать замкнутую ломаную линию (многоугольник), первая и последняя пары элементов массива должны быть одинаковыми.

Функция circle рисует окружность радиусом radius с центром в точке с координатами (x, y). Функция arc и ellipse вычерчивают дуги окружности и эллипса с центром в точке (x, y), соответственно ограниченные углами start_angle и end_engle. Для дуги окружности задается ее радиус radius, а для дуги эллипса радиусы по осям x_radius и y_radius. Оси эллипса всегда предполагаются параллельными осям координат страницы.

Углы, ограничивающие дуги, выражаются в градусах и отмеряются против часовой стрелки от направления, задаваемого осью X страницы. Дуга всегда проводится от угла start_angle к углу end_angle также против часовой стрелки.

Для функций rectangle, drawpoly, circle, arc и ellipse справедливы замечания относительно системы координат и режима отсечения, которые были сделаны относительно функций рисования линий.

С дугами окружностей связана функция

void far getarccoords(struct arccoordstype far *arccoords);

Эта функция возвращает характеристики дуги окружности, построенной при последнем вызове функции arc. Характеристики дуги записываются в переменную *arccoords. Тип этой переменной определен следующим способом:

struct arccoordstype

int x_start, y_start, x_end, y_end;

Первая пара чисел - это координаты центра окружности, вторая и третья - координаты начала и конца дуги. Значения координат привязаны к системе координат графического окна.

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

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

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

void far setwritemode(int mode);

Аргумент этой функции должен принимать значение 0 (простое копирование кода атрибута пикселя в видеопамять) и 1 (операция “исключающее или”).

void far setlinestyle(int line_style,unsigned user_pattern,int thickness);

устанавливает характер и толщину линий геометрических объектов. Аргумент thickness воздействует на контурные графические примитивы, а аргументы line_style и user_pattern - только на кусочно-линейные.

Аргумент thickness принимает значения NORM_WIDTH (толщина равна 1 пиксель) и THICK_WIDTH (толщина равна 3 пикселям). Аргумент linestyle задает характер рисуемой линии. Значения аргумента должны выбираться из констант перечислимого типа line_styles (например SOLID_LINE означает сплошную линию):

enum line_styles

SOLID_LINE=0,DOTTED_LINE,CENTER_LINE,

DASHED_LINE,USERBIT_LINE

Если значение аргумента line_style равно USERBIT_LINE, то это значит, что при построении кусочно-линейных примитивов будет использоваться шаблон, заданный программистом и переданный функции setlinestyle при помощи аргумента user_pattern. С помощью шаблона можно задать периодически повторяющийся рисунок линии с периодом до 16 пикселей. Если некоторый бит шаблона user_pattern равен 1, то соответствующий пиксель линии рисуется, в противном случае - нет.

Установки, сделанные при помощи функции setlinestyle, сохраняются до нового ее вызова. Для выяснения текущей установки характеристик линий предусмотрена функция

void far getlinesettingstype(struct linesettingstype far *line_info);

Данная функция заносит информацию в структуру, имеющую описание

struct linesettingstype

unsigned upattern;

Группа площадных графических функций имеет прототипы:

void far bar(int left, int top, int right, int bottom);

void far bar3d(int left, int top, int right, int bottom, int depth, int top_flag);

void far fillpoly(int num_points, int far *poly_points);

void far fillellipse(int x, int y, int x_radius, int y_radius);

void far pieslice(int x, int y, int start_angle, int end_angle, int radius);

void far sector(int x, int y, int start_angle, int end_angle, int x_ radius, int y_radius);

void far floodfill(int x, int y, int num_color_palette);

Функции bar и bar3d строят прямоугольники, координаты которых заданы первыми четырьмя аргументами функций и закрашивают его внутреннюю область. Функция bar не выводит внешний контур прямоугольника, а функция bar3d дополнительно обрамляет прямоугольник контура и тем же контуром дорисовывает проекцию параллелепипеда, построенного на базе этого прямоугольника. Глубина проекции задается аргументом depth, аргумент top_flag указывает, рисовать (если не нуль) или не рисовать (если нуль) верхние ребра параллелепипеда.

Функция fillpoly получает аргументы аналогично функции drawpoly, рисует контур и заполняет его внутренность. Однако если функция drawpoly допускает незамкнутые контуры, то функция fillpoly всегда соединяет последнюю точку в полученном списке с первой, автоматически замыкая контур.

Функция fillellipse заполняет эллипс с центром в точке (x, y) и радиусами x_radius и y_radius. Кроме того, она рисует контур эллипса.

Функции pieslice и sector похожи тем, что обе закрашивают указанные сектора, только pieslice делает это для кругового сектора, а sector для эллиптического. Аргументы, которые им передаются, те же, что и для функций arc и ellipse соответственно. После того как сектор закрашен, рисуется его контур. В отличие от функций arc и ellipse, функции pieslice и sector строят сектор от меньшего значения угла к большему (а не от start_angle к end_angle). Из-за этого невозможно заставить функции pieslice и sector изобразить сектор, пересекающий положительное направление оси X.

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

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

Для управления видом заполнения внутренней области служит функция

void far setfillstyle(int pattern,int num_color_palette);

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

enum fill_pattern

EMPTY_FILL=0,SOLID_FILL,LINE_FILL,LTSLASH_FILL,

SLASH_FILL,BKSLASH_FILL,LTBKSLASH_FILL,

HATCH_FILL,XHATCH_FILL,INTERLEAVE_FILL,

WIDE_DOT_FILL, CLOSE_DOT_FILL,USER_FILL

Аргумент pattern может принимать любые значения, кроме USER_FILL. Значение этой константы используется только при обработке информации, получаемой функцией getfillsettings (см. далее).

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

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

void far setfillpattern(char far *user_pattern,int num_color_palette);

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

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

void far getfillsettings(struct fillsettingstype far *fill_info);

void far getfillpattern(char far *user_pattern);

Первая возвращает в область памяти по указателю fill_info информацию о текущем заполнении. Информация заносится в структуру следующего типа:

struct fillsettingstype

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

Краткое описание программы.

AutoCAD – это Система Автоматического Проектирования (САПР). Она относится к классу программ CAD (Computer Aided Design), которые предназначены, в первую очередь, для разработки конструкторской документации: чертежей, моделей объектов, схем и т. д.

Программа позволяет строить 2D и 3D чертежи любых назначения и сложности с максимальной точностью.

Разработчиком программы является американская компания Autodesk, которая является на мировом рынке признанным лидером среди разработчиков систем САПР. Название программы – AutoCAD – образуется от английского Automated Computer Aided Drafting and Design, что в переводе означает «Автоматизированное черчение и проектирование с помощью ЭВМ».

Пользователи AutoCAD всегда имеют под рукой эффективную систему документации. Она позволяет создавать разнообразные проекты, работать с таблицами и текстовыми вставками, ускоряет проверку чертежей, а также взаимодействует с MS Excel. Для работы с двухмерными проектами лучшей утилиты просто не найти, ведь она располагает самими необходимыми инструментами.
Программа обладает удобным интерфейсом, пользователю доступно масштабирование изображений, а также панорамные функции. Кроме основного функционала для составления чертежей, утилита посредством ссылок позволяет выполнять привязку объектов, которые хранятся в иной базе данных. Еще один дополнительный и весьма полезный инструмент AutoCAD – вывод на печать нескольких чертежей одновременно.
Последняя версия утилиты располагает инструментами для трехмерного проектирования, дает возможность просматривать модели под различными углами, экспортировать их с целью создания анимации, проверять интерференцию, извлекать данные для проведения технического анализа.

AutoCAD поддерживает несколько форматов файлов:
- DWG – закрытый формат, разрабатываемый непосредственно утилитой;
- DXF – открытый формат, используется для обмена данными с пользователями иных САПР;
- DWF – для публикации 3D-моделей и чертежей.

Все перечисленные форматы позволяют работать с несколькими слоями, в результате чего проектирование становится особенно удобным, ведь в такой способ над каждым объектом можно трудиться по отдельности. Слои при необходимости можно отключать, делая тем самым объекты невидимыми.
Помимо этого, программа поддерживает чтение и запись (посредством процедур экспорта/импорта) файлов таких форматов: SAT, DGN, 3DS.

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

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

2. Рабочий стол AutoCAD:

Падающие меню.

Падающее меню Menu Browser – меню, появляющееся при щелчке кнопкой мыши на кнопке A в верхнем левом углу окна программы.

Строка падающих меню может быть изменена путем добавления либо удаления тех или иных пунктов. Для этого необходимо выбрать в падающем меню пункты Tools > Customize > Interface…, в появившемся диалоговом окне настройки интерфейса пользователя Customize User Interface на вкладке Customize в области Customizatios in All CUI Files раскрыть пункт Menus. Далее установить указатель мыши на один из пунктов меню и, щелкнув правой кнопкой мыши, вызвать контекстное меню, в котором выбрать соответствующий пункт для удаления имеющихся или создания новых падающих меню.

Строка падающих меню по умолчанию содержит следующие пункты:

File – команды работы с файлами: создание, открытие, сохранение, публикация в Интернете, печать, экспорт файлов в другие форматы, а также диспетчеры параметров листов, плоттеров, стилей печати и пр.;

Edit – инструменты для редактирования частей графического поля рабочего стола программы, работы с буфером обмена и пр.;

View – управление экраном, зумирование, панорамирование, установка трехмерной точки зрения, создание видовых экранов и именованных видов, установка визуальных стилей, тонирование, анимация траектории перемещения, установка необходимых панелей инструментов;

Insert – команды вставки блоков, внешних объектов, объектов других приложений;

Format – команды работы со слоями и их инструментами; цветом, типами линий; управление стилями текста, размеров, мультилиний, таблиц; видом маркера точки, установки единиц измерения, границ чертежа;

Tools – управление рабочими пространствами; палитрами; установка порядка прорисовки объектов и получение сведений о них; работа с блоками и их атрибутами; работа с языком AutoLISP; работа с пользовательской системой координат; настройка стандартов оформления; управление Мастерами (публикации в Интернете, установки плоттеров, создания таблиц стилей печати, цветозависимых стилей печати, компоновки листа, создания подшивки, импорта параметров печати); установка параметров черчения и привязок с помощью диалоговых окон и пр.;

Draw – команды двумерного и трехмерного рисования;

Dimension – команды простановки размеров и управления параметрами размерных стилей;

Modify – команды редактирования элементов чертежа;

Window – многооконный режим работы с чертежами;

Help – вывод на экран системы гипертекстовых подсказок.

Графические примитивы.

Графические примитивы это заранее определенные элементы, которые можно поместить в чертеж при помощи одной команды. Каждый графический примитив формируется на основании геометрического описания объекта.
Примитивы (табл.№1.) можно классифицировать:

  • односложные и составные;
  • плоские и объемные (3d).

Таблица №1

Имя примитивы Команда
1) Точка _Point
2) Линия (Отрезок) _Line
3) Луч _Ray
4) Линия конструкции (Прямая) _Xline
5) Фигура _Solid
6) Полоса Trace
7) Дуга _Arc
8) Круг _Cirle
9) Полилиния _Pline
10) Прямоугольник _Rectang
11) Полигон (Многоугольник) _Polygon
12) Овал(Кольцо) _Donut
13) Эллипс _Ellips
14) Эскиз Sketch
15) Сплайн _Spline
16) Мультилиния _Mline
17) 3DПолилиния 3DPoly
18) Ящик Box
19) Клин Wedge
20) Конус (Дубль) Cone
21) Цилиндр Cylinder
22) Шар Spchere
23) Тор Toruc

Свойства примитивов.

Примитивы имеют следующие свойства:
- Цвет (color);
- Тип линий (linetype);
- Масштаб типа линий;
- Принадлежность слою;
- Уровень и высота (elevation).