
- •Введение.
- •Цели, задачи и структура курса.
- •Предмет компьютерной графики.
- •Сферы применения компьютерной графики.
- •Отображение информации.
- •Проектирование.
- •Моделирование.
- •Интерфейс пользователя.
- •Графическая система.
- •Объект и наблюдатель.
- •Визуализация изображений.
- •Растровая визуализация.
- •Векторная визуализация.
- •Цвет
- •Свет и изображение.
- •Глаз человека.
- •Характеристики цвета.
- •Цветовые модели.
- •Глубина цвета
- •Палитра
- •Координаты.
- •Прямоугольная система координат на плоскости.
- •Прямоугольная система координат в 3-x мерном пространстве.
- •Прямоугольная система координат в n-мерном пространстве.
- •Полярная система координат.
- •Графическое представление.
- •Трёхмерное расширение.
- •Цилиндрическая система координат.
- •Сферическая система координат.
- •Координаты в матричном виде.
- •Произведение матриц.
- •Преобразование координат.
- •Аффинные преобразования координат.
- •Аффинные преобразования координат на плоскости.
- •Однородные координаты.
- •Аффинные преобразования координат в трехмерном пространстве.
- •Преобразования объектов.
- •Аффинные преобразования объектов на плоскости.
- •Трехмерные аффинные преобразования объектов.
- •Композиция преобразований.
- •Эффективность преобразований.
- •Базовые растровые алгоритмы.
- •Связность.
- •Алгоритмы вывода прямой линии
- •Прямое вычисление координат.
- •Алгоритм Брезенхэма.
- •Алгоритм вывода окружности.
- •Алгоритм Брезенхэма построения окружности.
- •Растеризация многоугольника.
- •Алгоритм со списком реберных пересечений.
- •Алгоритм заполнения со списком активных ребер.
- •Заливка с затравкой.
- •Алгоритмы отсечения.
- •Отсечение отрезков.
- •Алгоритм Коэна-Сазерленда.
- •FC-алгоритм.
- •Алгоритм Лианга-Барски.
- •Двумерный алгоритм Кируса — Бека
- •Проверка выпуклости многоугольника и определение нормалей
- •Алгоритм с использованием векторных произведений
- •Разбиение не выпуклых многоугольников
- •Отсечение многоугольника
- •Алгоритм Сазерленда-Ходгмана
- •Простой алгоритм отсечения многоугольника
- •Алгоритм отсечения многоугольника Вейлера-Азертона
- •Удаление невидимых линий и поверхностей.
- •Алгоритм удаления поверхностей с Z-буфером.
- •Алгоритм разбиения области Варнока.
- •Алгоритм трассировки лучей.
Компьютерная графика.
c11 |
c12 |
|
c1p |
] |
|
C= c21 |
c22 |
|
c2p |
, |
|
[cm1 cm2 |
cmp |
|
для которой элементы cij вычисляются по формуле:
n
cij=∑ aik bkj k=1
Правило вычисления элементов матрицы С можно легко запомнить по названию "строка на столбец". И действительно, для вычисления любого элемента cij необходимо умножить элементы i-й строки матрицы А на элементы j-го столбца матрицы В.
|
|
|
|
|
[ |
cij |
] = [ai1 ai2 |
||
|
|
|
|
|
|
|
b1j |
|
ai n |
b2j |
. |
||
] |
|
|||
|
[ |
bnj |
] |
Произведение матриц определено только для случая, когда количество столбцов матрицы А равно количеству строк матрицы В.
Преобразование координат.
Пусть задана n-мерная система координат в базисе (k1 ,k 2 ,k 3 , ,kn ), описывающая положение точки в пространстве с помощью числовых значений ki . В компьютерной графике чаще всего используется 2-х мерная (n=2) и 3-х мерная (n=3) системы координат.
Если задать другую, N-мерную, систему координат в базисе (m1 ,m2 ,m3 , … ,mN ) и
поставить задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует) можно записать в таком виде:
|
m1= f 1 (k1, k2, k3, ,kn), |
|
|
m2= f 2 (k1, k 2, k3, ,k n) , |
|
|
{mN = f N (k1, k 2, k 3, ,kn ) , |
|
где f i |
- функция пересчета i-й координаты, аргументы — координаты в системе k i . |
|
Можно |
поставить и обратную задачу |
— по известным координатам |
(m1, m2, m3, ,mN ) определить координаты |
(k1, k 2, k3, ,k n) . Решение обратной |
|
задачи запишем так: |
|
-22-
Компьютерная графика.
{k1=F 1 (m1, m2, m3, ,mn ),
k2=F 2 (m1, m2, m3, ,mn) ,
k N =F N (m1, m2, m3, ,mn) ,
где F i – функция обратного преобразования.
В случае, когда размерность систем координат не совпадают (n ≠ N ) , осуществить
однозначное преобразование координат зачастую не удается. Например, по двумерным экранным координатам нельзя без дополнительных условий однозначно определить трехмерные координаты отображаемых объектов.
Если размерности систем совпадают (n=N ) , то также возможны случаи, когда нельзя однозначно решить прямую или обратную задачи.
Преобразование координат классифицируют:
•по системам координат — например, преобразование из полярной системы в прямоугольную;
•по виду функции преобразования f i .
По виду функций преобразования различают линейные и нелинейные преоб-
разования. Если при всех i = 1, 2, …, N функции |
f i |
— линейные относительно |
||||
аргументов |
(k1, k 2, k3, ,k n) , то есть |
f i=аi1 k1+аi2 k2 +...+аi n k n+аi n+1 , |
где aij |
— |
||
константы, |
то такие преобразования |
называются |
линейными, а при |
(n=N ) |
— |
|
аффинными. |
функция f i |
|
|
|
|
|
Если хотя |
бы для одного i |
— |
нелинейная относительно |
(k1, k 2, k3, ,k n) , тогда преобразование координат в целом не линейно.
Линейные преобразования наглядно записываются в матричной форме:
m |
] |
|
a11 |
a12 a1n |
a1n+ 1 |
k |
1 |
] |
||
1 |
|
a21 |
a22 |
a2n |
a2n +1 |
|
||||
m2 |
= |
k |
2 |
|||||||
|
|
|
|
|
|
|||||
[mN |
|
[aN1 aN2 |
|
aNn |
aNn+1][k N |
|||||
Здесь матрица коэффициентов |
(aij ) умножается |
на |
матрицу-столбец (ki) и в |
|||||||
результате получается матрица-столбец (тi) . |
|
|
|
|
|
Аффинные преобразования координат.
Аффинные преобразования — это преобразования при которых параллельность прямых сохраняется.
Аффинные преобразования координат на плоскости.
Общая формула описания аффинных преобразований:
{X =Ax +By+C , Y =Dx+ Ey+F ,
-23-
Компьютерная графика.
В матричном виде формула выглядит так: |
|
[YX ] = [yx] [DA |
EB ] + [CF ]. |
Частные случаи аффинного преобразования: Параллельный перенос.
{X =x−dx Y = y−dy
Масштабирование.
{X =x/ sx
Y = y/ sy
Поворот.
{X = x cosα + y sin α Y =−x sin α + y cos α
Однородные координаты.
Введем понятие однородных координат:
На плоскости точка в однородных координатах описывается не двумя, а тремя числами. Пусть на плоскости есть точка М с координатами (х, у). Тогда ее однородными координатами называются три одновременно не равных нулю числа
(X, Y, h) таких, что (x, y) = (X/h, Y/h, h).
В машинной графике точке с координатами (х, у) на плоскости ставится в соответствие точка с координатами (х, у, 1) в пространстве. Фактически точка (х, у) проектируется на плоскость, параллельную координатной и отстоящей от нее на расстояние, равное единице.
Теперь перепишем общую формулу аффинных преобразований в матричном виде:
[X ]
Y
1
x |
A |
B |
C |
] |
= [1y |
] [D0 |
E0 |
F1 |
Теперь перепишем операции аффинного преобразования в матричном виде. Параллельный перенос.
1 |
0 |
−dx |
] |
T (dx ,dy) = [00 |
01 |
−1dy |
Масштабирование.
-24-
Компьютерная графика.
S (sx , sy) = [ |
1/ sx |
0 |
0 |
||
00 |
1/0sy |
10] |
|||
Поворот. |
|
|
|
|
] |
[ |
cos α |
sin α |
0 |
||
R(α ) = −sin α |
cos α |
0 |
|
||
|
0 |
0 |
1 |
|
Аффинные преобразования координат в трехмерном пространстве.
Запишем в виде формулы:
{X =Ax+By+Cz+ D ,
Y =Ex +Fy+Gz+H ,
Z =Kx +Ly+Mz+N ,
где А, В, ..., N —константы. Дадим также в матричной форме:
X |
A |
B |
C |
D |
] [ |
x |
], |
Y |
E |
F |
G |
H |
y |
||
[Z1 |
]= [K0 0L M0 |
N1 |
1z |
Для трехмерного пространства любое аффинное преобразование также может быть представлено последовательностью простейших операций. Рассмотрим их.
Параллельный перенос.
{X = x−dx Y = y−dy Z=z−dz
T (dx ,dy ,dz ) = [ |
1 |
0 |
0 |
−dx |
0 |
1 |
0 |
−dy |
|
00 |
00 |
01 |
−1dz] |
Масштабирование.
{X =x/ sx Y = y/ sy
Z=z/ sz
S (sx , sy , sz) = [ |
1/ sx |
0 |
0 |
0 |
] |
0 |
1/ sy |
0 |
0 |
||
00 |
00 |
1/0sz |
10 |
Поворот вокруг оси x на угол α.
-25-