Графические примитивы. Создание изображений. Графические примитивы Какими координатами задается примитив окружность

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

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

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

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

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

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

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

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

Система управления дисплеем позволяет управлять видом изображения на экране и помогает пользователю просматривать его под желаемым углом или менять размер, уменьшая и увеличивая его. Дисплейный процессор в это время прочитывает данные из буфера и преобразовывает их в картинку. Он может повторять это действие около 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 содержит код заполнения (номер входа во внутреннюю палитру). Вторая функция по переданному ей адресу записывает матрицу шаблона, установленную пользователем.

КОМПАС-3D для студентов и школьников. Черчение, информатика, геометрия Большаков Владимир

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

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

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

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

Окружность может быть построена по различным исходным данным, например, как это показано в табл. 1.2.

Дуга окружности также может строиться по-разному, в зависимости от способа задания ее параметров (табл. 1.3).

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

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

Команда Эллипс позволяет строить эллипс несколькими способами. В системе КОМПАС-3D LT V10 ввод эллипса осуществляется следующими командами:

? Эллипс по центру и полуосям;

? Эллипс по диагонали габаритного прямоугольника .

Ввод кривых рассмотрим также на примере системы КОМПАС-3D LT V10.

Команда NURBS-кривая позволяет начертить нерегулярный рациональный В-сплайн (Non-Uniform Rational B-Spline). При вводе этой кривой последовательно указываются опорные точки, возможно обращение к кнопке Замкнутый и построение соответствующих кривых (рис. 1.2). Можно задавать характеристики кривой - вес характерной точки и порядок кривой.

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

Команда Ломаная позволяет начертить линию, состоящую из отрезков прямых.

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

Из книги Photoshop CS2 и цифровая фотография (Самоучитель). Главы 15-21. автора Солоницын Юрий

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

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Поверхностные примитивы Стандартные трехмерные примитивы в программе AutoCAD можно создать несколькими способами. Первый способ – использование команды 3D. После ее запуска в командной строке появится запрос: Enter an option : Выбрав один из параметров

Из книги Язык программирования С# 2005 и платформа.NET 2.0. автора Троелсен Эндрю

Создание изображений В соответствии с представленным выше проектом первым делом нужно создать пять файлов *.bmp для использования в циклах анимации. Если вы хотите создать свои пользовательские изображения, выберите пункт меню Project?Add New Item и укажите пять новых файлов

Из книги Введение в OpenGL автора Компьютеры Автор неизвестен -

Вершины и примитивы Определение атрибутов вершины Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом:void glVertex(type coords)void glVertexv(type *coords)Координаты точки задаются максимум четырьмя значениями: x, y,

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

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

Из книги AutoCAD 2009. Начали! автора Соколова Татьяна Юрьевна

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

Из книги AutoCAD 2010 автора Орлов Андрей Александрович

Поверхностные примитивы Стандартные трехмерные примитивы в программе AutoCAD можно создать несколькими способами. Первый способ – использование команды 3D. После ее запуска в командной строке появится запрос:Enter an option:Выбрав один из параметров

Из книги Справочник по PHP автора

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

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

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

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

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

4. Примитивы синхронизации ОС QNX Neutrino предоставляет широкий набор элементов синхронизации выполнения потоков, как в рамках одного процесса, так и разных. Это практически полный спектр примитивов, описываемых как базовым стандартом POSIX, так и всеми его расширениями

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

Глава 23 Создание реалистичных изображений Визуальные стили Настройка стиля отображения Подавление линий заднего плана Подготовка моделей для тонирования Пользовательские параметры тонирования Освещение Точечный источник света Прожектор Удаленный источник света

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

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

Из книги Операционная система UNIX автора Робачевский Андрей М.

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

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

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

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Графические примитивы Графические примитивы представляют собой процедуры, осуществляющие рисование в графическом окне. Рисование осуществляется текущим пером (линии), текущей кистью (заливка замкнутых областей) и текущим шрифтом (вывод строк). procedure SetPixel(x,y: integer; c: Color);

(Основы инженерной графики)
  • ЖЕЛЕЗОБЕТОННЫЕ КОНСТРУКЦИИ ПЛОСКИХ ПЕРЕКРЫТИЙ
    Все существующие типы плоских железобетонных перекрытий по их конструктивной схеме делятся на две основные группы: балочные и безбалочные. Балочные перекрытия состоят из балок, идущих в одном или двух направлениях, и опирающихся на них плит или панелей. Безбалочные перекрытия выполняются без балок, а...
    (Строительные конструкции)
  • (Управление финансами)
  • Понятие о графических примитивах
    На большинстве ЭВМ и, соответственно, ПК принят растровый способ изображения графической информации. Это означает, что изображение представляется в виде прямоугольной матрицы точек (пикселей). Каждый пиксель имеет свой цвет, выбираемый из заданного набора цветов - гак называемой палитры. Для реализации...
    (Основы инженерной графики)
  • Графическое представление PV и FV
    На рынке капиталов организации и люди обменивают денежные средства в настоящем на денежные средства в будущем. Прямая АБ представляет собой норму обмена на рынке капиталов между денежными средствами сегодня и денежными средствами через год. Ее наклон равен на графике тангенсу острого угла наклона прямой...
    (Управление финансами)
  • Подготовка, оформление и ведение графических документов, используемых сотрудниками органов внутренних дел в особых условиях
    В деятельности органов и учреждений МВД России нередко возникает необходимость использовать в работе план или схему участка местности. Составляются крупномасштабные планы территорий, обслуживаемых участковыми инспекторами, планы жилой и производственной зон учреждений исполнения наказания, схемы...
    (Тактико-специальная подготовка)