Professional Documents
Culture Documents
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 P(x, y, z) 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