Professional Documents
Culture Documents
LabDHMT XayDungMaTranOpenGL Lab6
LabDHMT XayDungMaTranOpenGL Lab6
LabDHMT XayDungMaTranOpenGL Lab6
1. Giới thiệu.................................................................................................................1
2. labMyOpenGLFunction.cpp..................................................................................1
3. BÀI TẬP..................................................................................................................3
1. Giới thiệu
Nội dung bài Lab nhằn xây dựng hàm myFrustum() nhằm thay thế hàm glFrustum() của
OpenGL
2. labMyOpenGLFunction.cpp
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <GL/glut.h>
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void myDrawModel()
{
glColor3f( 0.0f, 1.0f, 0.0f );
glBegin(GL_LINE_LOOP);
glVertex3f(-2, 0, 0); //P0
glVertex3f(0, 0, 1.5); //P1
glVertex3f(0, 2.5, 0); //P2
glEnd();
}//myDrawModel
if (model == 1)
{
glGetFloatv(GL_MODELVIEW_MATRIX, M); // (MODELVIEW= MODEL+ VIEWING)
M[1][1] = 2.*n/(t-b);
M[1][0] = M[1][2] = M[1][3] = 0.f;
M[2][0] = (r+l)/(r-l);
M[2][1] = (t+b)/(t-b);
M[2][2] = -(f+n)/(f-n);
M[2][3] = -1.f;
M[3][2] = -2.f*(f*n)/(f-n);
M[3][0] = M[3][1] = M[3][3] = 0.f;
glMultMatrixd(&M[0][0]);
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
gluLookAt(10, 0, 0, 0, 0, 0, 0, 0, 1);
printOPENGL_MATRIX(1, "2. Camera matrix");
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
myDrawModel();
glFlush ();
}
glMatrixMode (GL_MODELVIEW);
}
3. BÀI TẬP
Cho điểm Pw(xw, yw, zw, 1) trong hệ tọa độ thế giới thực (world space)
1) Trình bày ma trận biến đổi và xác định điểm Pw(xw, yw, zw, 1) khi thực hiện các
phép biến đổi sau:
a. Phép tịnh tiến với dx, dy, dz
b. Phép quay quanh trục Ox, Oy, Oz
c. Phép quay quanh một trục PQ có P(xp, yp, zp), Q(xq, yq, zq)
2) Trình bày ma trận biến đổi và xác định điểm Pc(xc, yc, zc, 1) trong hệ tọa độ
camera space khi thực hiện:
a) Phép biến đổi camera đặt tại t = (x1, y1, z1), nhìn vào c = (x2, y2, z2), hướng
lên k = (0, 1, 0)]
3) Trình bày ma trận biến đổi và xác định điểm Pproj(xproj, yproj, zproj, wproj) trong
clipping/projection space khi thực hiện:
a) Phép chiếu song song
b) Phép chiếu xiên
c) Phép chiếu trực giao
d) Phép chiếu phối cảnh
-----------------------------------------------