Computer Graphics
Lecture 26
Fasih ur Rehman
Last Class
•
Shading
•
Phong Reflection Model
Today’s Agenda
•
Examples
Matrix Multiplication
void matrixMul(float P[1][3],float T[3][3])
{
int i,j,k; //Initialize Matrix P1 with Zero
for(i=0;i<3;i++)
P1[0][i]=0; /*Mutiply T with P and store
the result in P1 */
for(k=0;k<1;k++)
for(i=0;i<3;i++)
for(j=0;j<3;j++)
P1[k]
Matrix Identity
void matrixIdentity(float T[3][3])
{
int i,j;
/* Make matrix T as Identity Matrix by
Storing 1 in the left diagonal positions of
Matrix T and store 0 in other positions */
for(i=0;i<3;i++) {
for(j=0;j<3;j++) {
if(i==j)
Translation
void translate_point(int x,int y,int tx,int ty)
//Translate a point by translation factors tx,ty
{
float T[3][3];
matrixIdentity(T);
T[2][0]=tx;
T[2][1]=ty;
P[0][0]=x;
P[0][1]=y;
Rotation
void rotate_point(int x,int y,float angle)
// Rotate a point by given angle
{
float R[3][3];
float radian;
radian=(3.141/180)*angle;
matrixIdentity(R);
R[0][0]=cos(radian);
Scale
void scale_point(int x,int y,float sx,float sy)
/* Scale a point by scaling factors sx,sy and
with respect to some fixed point */
{
float S[3][3];
matrixIdentity(S);
S[0][0]=sx;
S[2][0]=0;
S[1][1]=sy;
Reflect
void reflect_point_X(int x,int y)
{
float R[3][3];
matrixIdentity(R);
R[1][1]=-1;
P[0][0]=x;
P[0][1]=y;
P[0][2]=1;
Shear
void shear_point_Y(int x,int y,float shy)
{
float R[3][3];
matrixIdentity(R);
R[0][1]=shy;
P[0][0]=x;
P[0][1]=y;
P[0][2]=1;
Summary
•
Examples
References
•
•
•
Fundamentals of Computer Graphics Third
Edition by Peter Shirley and Steve
Marschner
Interactive Computer Graphics, A Topdown Approach with OpenGL (Sixth
Edition) by Edward Angel.
/>rame_cpp.html