4. Преобразования проецирования
Системы координат
Преобразования координат
Формирование изображения камерой
Системы координат OpenGL
Проекции
Плоские геометрические проекции объектов
Перспективные и параллельные проекции
Ортографические проекции
Аксонометрические проекции
Триметрическая проекция
Диметрическая проекция
Изометрическая проекция
Косоугольные проекции
Проекции кавалье и кабине
Перспективные проекции
Примеры перспективных проекций
Общая форма однородных координат
Ортографическое проецирование в OpenGL
Функции ортографического преобразования
Перспективное проецирование в OpenGL
Матрица перспективного проецирования
Функции перспективного преобразования
Пример программы
Пример программы
591.50K
Категория: ПрограммированиеПрограммирование

Преобразования проецирования

1. 4. Преобразования проецирования

2. Системы координат

Правосторонняя
Левосторонняя
Оконная

3. Преобразования координат

4. Формирование изображения камерой

1. Установить штатив и направить камеру на
сцену (видовое преобразование).
2. Подготовить сцену в нужной композиции
(модельное преобразование).
3. Подобрать объектив или отрегулировать
масштабирование (преобразование
проекции).
4. Определить размер изображения
(преобразование в порт просмотра).

5. Системы координат OpenGL

1. Правосторонняя: модельно-видовые
преобразования.
2. Левосторонняя: установка параметров
проецирования.
3. Оконная: преобразование в порт
просмотра.

6. Проекции

7. Плоские геометрические проекции объектов

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

8. Перспективные и параллельные проекции

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

9. Ортографические проекции

Ортографические проекции – это проекции на одну
из координатных плоскостей x = 0, y = 0 или z = 0.
0
0
Px
0
0
0 0 0
1 0 0
0 1 0
0 0 1
1
0
Py
0
0
0 0 0
0 0 0
0 1 0
0 0 1
1
0
Pz
0
0
0 0 0
1 0 0
0 0 0
0 0 1

10. Аксонометрические проекции

Аксонометрические проекции – это проекции на
плоскость, не являющуюся одной из координатных
плоскостей x = 0, y = 0 или z = 0.
Триметрическая проекция строится произвольными
поворотами вокруг произвольных координатных
осей в произвольном порядке с последующим
проецированием на плоскость z = 0.
Диметрическая проекция – это триметрическая
проекция с двумя одинаковыми коэффициентами
искажения и произвольным третьим
коэффициентом.
Изометрическая проекция – это триметрическая
проекция, в которой все три коэффициента
искажения равны

11. Триметрическая проекция

T Pz Rx (θ ) Ry ( )
1
0
T
0
0
0 0 0 1
0
1 0 0 0 cos
0 0 0 0 sin
0 0 1 0
0
cos
sin sin
T
0
0
fx
*2
xx
*2
yx ,
0
cos
0
0
fy
0
sin
cos
0
0 cos 0 sin 0
0 0
1
0
0
0 sin 0 cos 0
1 0
0
0
1
sin
0 x*x
*
sin cos 0 y x
0
0 0
0
1 0
*2
xy
*2
yy , fz
*2
xz
*2
yz
x*y
x*z
y*y
y*z
0
0
0
0
0
0
0
1

12. Диметрическая проекция

T Pz Rx (θ ) R y ( )
cos
sin sin
T
0
0
fx
*2
xx
*2
yx ,
0
sin
cos
sin cos
0
0
0
0
fy
*2
xy
*2
yy , fz
0 x*x
*
0 yx
0 0
1 0
*2
xz
*2
yz
f x2 cos2 sin 2 sin 2 f y2 cos2
2
fz
sin sin cos
2
arcsin( f z
2
2
2 ), arcsin( f z
2 f z2 )
*
xy
y*y
*
xz
y*z
0
0
0
0
0
0
0
1

13. Изометрическая проекция

T Pz Rx (θ ) Ry ( )
0
sin
cos
sin sin cos sin cos
T
0
0
0
0
0
0
fx
*2
xx
*2
yx , f y
*2
xy
*2
yy , fz
0 x*x
*
0 yx
0 0
1 0
*2
xz
x*y
y*y
0
0
x*z 0
*
y z 0
0 0
0 1
*2
yz
f x2 cos2 sin 2 sin 2 f y2 cos2 f z2 sin 2 sin 2 cos2
arcsin( 1 3 ) 35.26 , arcsin( 1 2) 45

14. Косоугольные проекции

Косоугольная проекция – это проекция,
которая формируется параллельными
проекторами, расположенными под косым
углом к плоскости проекции.
Проекция кавалье получается когда угол
между проекторами и плоскостью проекции
составляет 45°.
Проекция кабине получается когда угол между
проекторами и плоскостью проекции
составляет arctg(1/2).

15. Проекции кавалье и кабине

1
0
Tкавалье
0
0
1
0
Tкабине
0
0
0
0.433
1
0.25
0
0
0
0
0
0.866
1
0.5
0
0
0
0
0
0
0
1
0
0
0
1

16. Перспективные проекции

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

17. Примеры перспективных проекций

18. Общая форма однородных координат

wx
wy
A
wz
w

19. Ортографическое проецирование в OpenGL

20. Функции ортографического преобразования

void glOrtho(GLdouble l, GLdouble r, GLdouble b,
GLdouble t, GLdouble n, GLdouble f);
void gluOrtho2D(GLdouble l, GLdouble r,
GLdouble b, GLdouble t);
// glOrtho(l, r, b, t, –1.0, 1.0);

21. Перспективное проецирование в OpenGL

22. Матрица перспективного проецирования

Fe1
n
0
0
0
n
0
0
0
xe
nxe
0
n
0
0
0
n
0
0
ye
nye
0
0
f
f n
0
0
f
0
0
1
0
0
0
1
A1
nxe
ze
A1
nye
ze
fze fn
ze
1
f n ze
0
1
fze fn
ze

23. Функции перспективного преобразования

void glFrustum(GLdouble l, GLdouble r,
GLdouble b, GLdouble t, GLdouble n,
GLdouble f);
void gluPerspective(GLdouble angle, GLdouble
aspect, GLdouble n, GLdouble f);
t = n * tg( / 180 * angle / 2);
b = –t;
r = t * aspect;
l = –r;

24. Пример программы


void setShape(float vAng, float asp, float nearD, float
farD)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(vAng, asp, nearD, farD);
}

setShape(30.0f, 64.0f/48.0f, 0.5f, 50.0f);

25. Пример программы

English     Русский Правила