Similar presentations:
Проецирование трехмерных объектов
1. Проецирование трехмерных объектов
Лекция №6«компьютерная графика
2. Классификация проекций
КЛАССИФИКАЦИЯ ПРОЕКЦИЙ3. Определение
• В общем случае проекции преобразуютточки, заданные в системе координат
размерностью n в точки системы
координат размерностью меньшей, чем n
• точки трехмерного пространства преобразуются
в точки двумерного пространства
4. Основные элементы проекции:
• Центр проекции• Проецирующие лучи (проекторы)прямые
• Проекционная (картинная) плоскость
5.
Плоские геометрическиепроекции
центральные
параллельные
6. Центральная проекция
центр проекции находится на конечномрасстоянии от проекционной плоскости
7. Параллельная проекция
центр проекции удален на бесконечность8. Одноточечная проекция
• Точка схода называется главной, если совокупностьпрямых параллельна одной из координатных осей
9. Основные виды проекций
Плоские геометрическиепроекции
Параллельные
Ортографически
е
Аксонометрические
Центральные
Косоугольные
Изометрические
10. Вывод формул центральной перспективной проекции
Расположение осей координат на экране11. Системы координат
12.
• Плоскость экрана совпадает с проекционной• k – расстояние от наблюдателя до проекционной плоскости
• А проецируется на экран как А’
13. Определим координаты A’
Из подобия треугольников Ay Az N и yэ ONyэ
y
ky
, yэ
z k k
z k
kx
xэ
N 0,0, k
z k
14.
• точку наблюдения поместить в начало координат,• проекционную плоскость на расстояние
а
15.
kxxэ
z
ky
yэ
z
16. Буфер кадра (Frame buffer)
• буфер глубины или Z-буфер(Depth buffer),
• буфер цвета (Color buffer),
• накопительный буфер
(Accumulation buffer)
• буфер шаблона (Stencil buffer).
17. Проверка глубины - это эффективная технология удаления скрытых поверхностей
Проверка глубины - это эффективнаятехнология удаления скрытых поверхностей
• активизировать проверку глубины
glEnable(GL_DEPTH_TEST);
• В программе
glClear(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT);
• Отключить
glDisable(GL_DEPTH_TEST);
18. Преобразования точек в разных системах координат
ПРЕОБРАЗОВАНИЯ ТОЧЕК В РАЗНЫХСИСТЕМАХ КООРДИНАТ
19.
20.
21. Масштабирование
• glScale (arg1, arg2, arg3)аргументы - коэффициенты масштабирования
по каждой из осей
22. изменить положение точки наблюдения
• void gluLookAt (GLdouble eyex, GLdoubleeyey, GLdouble eyez,
GLdouble centerx, GLdouble centery,
GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz)
23. Проекционные преобразования
• определяем отсекающий объем видимости–Как сцена будет отображаться на
экране монитора
–Какие объекты или части объектов
войдут в окончательное
изображение
24. Параллельное проецирование в OpenGL
25.
• void glOrtho(GLdouble left, GLdouble right,GLdouble bottom, GLdouble top, GLdouble
near, GLdouble far)
• void gluOrtho2D(GLdouble left, GLdouble
right, GLdouble bottom, GLdouble top)
26. Перспективные преобразования в OpenGL
27.
• void glFrustum(GLdouble left, GLdoubleright, GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(xmin, xmax, ymin, ymax, near, far);
28.
29.
• void gluPerspective(GLdouble angley,GLdouble aspect, GLdouble znear, GLdouble
zfar)
30. Область вывода
glViewPort(GLint x, GLint y, GLint• void
width, GLint height)
ox=x+width/2, oy=y+height/2
• Пусть px=width, py=height,
(xw, yw, zw)T = ( (px/2) xn+ ox ,
(py/2) yn+ oy ,
[(f-n)/2] zn+(n+f)/2 )T
31.
• n и f задают минимальную и максимальнуюглубину точки в окне
• void glDepthRange(GLclampd n, GLclampd f)