CG Manual - CG MANUAL
CG Manual - CG MANUAL
CG Manual - CG MANUAL
1. Getting Started
Before starting programming it is good idea to know details about system, say
renderer/graphics card and CPU, as well as OpenGL and DirectX versions installed in your
computer. Of course, we are here assuming that your computer is a PC running Microsoft
Windows XP or Vista.
The idea of producing pictures or images using a computer requires two processes: modeling
and rendering. Modeling has to do with the creation, manipulation, and storage of geometric
objects on computer, while rendering just means converting a scene to an image. Rendering
involves a number of transformations, namely: rasterization, shading, illumination, and
animation of the image. Computer graphics has been widely used in many areas of interest
from graphics presentation, paint systems, computer-aided design (CAD), and scientific
visualization to simulation of natural phenomena, virtual reality, computer games and, in
general, entertainment.
2. In the Project Types: pane, select Visual C++, Win32. Then select Win 32 Console
Application in the Templates: pane. Name your project, select the location for the project
and click OK.
3. Click the Application Settings tab on the left, and check the Empty Project box. Then
click Finish button.
2. In the Categories pane, select Visual C++, Code. Then select C++ File( ,cpp) in the
Templates pane. Name your file, and then click Add.
2. The Draw Property Page dialog will open. Once it appears, do the following:
b. In the left pane, select the linker subtree and then click the Input option. Add the
following code to the Additional Dependencies text in the right pane.
Introduction to OpenGL
OpenGL (Open Graphics Library) is an application program interface (API) that is used to
define 2D and 3D computer graphics. The interface consists of over 250 different function
calls which can be used to draw complex three‐dimensional scenes from simple primitives.
OpenGL was developed by Silicon Graphics Inc. (SGI) in 1992 and is widely used in CAD,
virtual reality, scientific visualization, information visualization, and flight simulation.
OpenGL's basic operation is to accept primitives such as points, lines and polygons, and
convert them into pixels. This is done by a graphics pipeline known as the OpenGL state
machine.
FEATURES OF OpenGL:
Geometric Primitives allow you to construct mathematical descriptions of objects.
Color coding in RGBA (Red‐Green‐Blue‐Alpha) or in color index mode.
Viewing and Modeling permits arranging objects in a 3‐dimensional scene move our
camera around space and select the desired vantage point for viewing the scene to be
rendered.
Texture mapping helps to bring realism into our models by rendering images of
realistic looking surfaces on to the faces of the polygon in our model.
Materials lighting OpenGL provides commands to compute the color of any point
given the properties of the material and the sources of light in the room.
Double buffering helps to eliminate flickering from animations. Each successive
frame in an animation is built in a separate memory buffer and displayed only when
rendering of the frame is complete.
Anti‐aliasing reduces jagged edges in lines drawn on a computer display. Jagged lines
often appear when lines are drawn at low resolution. Anti‐aliasing is a common
computer graphics technique that modifies the color and intensity of the pixels near
the line in order to reduce the artificial zig‐zag.
Gouraud shading is a technique used to apply smooth shading to a 3D object and
provide subtle color differences across its surfaces.
Z‐buffering keeps track of the Z coordinate of a 3D object. The Z‐buffer is used to
keep track of the proximity of the viewer's object.
It is also crucial for hidden surface removal Transformations: rotation, scaling,
translations, perspectives in 3D, etc.
GLUT Functions:
The OpenGL Utility Toolkit (GLUT) is a programming interface with ANSI C and
FORTRAN bindings for writing window system independent OpenGL programs.
glutInit :‐ glutInit is used to initialize the GLUT library.
Syntax: ‐ void glutInit(int *argcp, char **argv);
argcp
A pointer to the program's unmodified argc variable from main. Upon return, the value
pointed to by argcp will be updated, because glutInit extracts any command line options
intended for the GLUT library.
argv
The program's unmodified argv variable from main. Like argcp, the data for argv will be
updated because glutInit extracts any command line options understood by the GLUT library.
glutInitWindowPosition, glutInitWindowSize :‐
glutInitWindowPosition and glutInitWindowSize set the initial window position and size
respectively.
Syntax:‐ void glutInitWindowSize(int width, int height);
void glutInitWindowPosition(int x, int y);
Width: Width in pixels. Height: ‐ Height in pixels. X: Window X location in pixels. Y:
Window Y location in pixels.
glutMouseFunc:‐ glutMouseFunc sets the mouse callback for the current window.
Syntax:‐ void glutMouseFunc(void (*func)(int button, int state, int x, int y));
func :‐ The new mouse callback function.
GL Functions:
glBegin & glEnd :‐ The glBegin and glend functions delimit the vertices of a primitive or a
group of like primitives.
mode :‐ The primitive or primitives that will be created from vertices presented
between glBegin and the subsequent glEnd. The following are accepted symbolic constants
and their meanings:
Values Meaning
GL_POINTS Treats each vertex as a single point. Vertex n defines point n. N
points are drawn.
GL_LINES Treats each pair of vertices as an independent line segment.
Vertices 2n ‐ 1 and 2n define line n. N/2 lines are drawn.
GL_LINE_STRIP Draws a connected group of line segments from the first vertex
to the last. Vertices n and n+1 define line n. N ‐ 1 lines are
drawn.
GL_LINE_LOOP Draws a connected group of line segments from the first vertex
to the last, then back to the first. Vertices n and n + 1 define line
n. The last line, however, is defined by vertices N and 1. N lines
are drawn.
GL_TRIANGLES Treats each triplet of vertices as an independent triangle. Vertices
3n ‐ 2, 3n ‐ 1, and 3n define triangle n. N/3 triangles are drawn.
GL_TRIANGLE_STRIP Draws a connected group of triangles. One triangle is defined for
each vertex presented after the first two vertices. For odd n,
vertices n, n + 1, and n + 2 define triangle n. For even n, vertices
n + 1, n, and n + 2 define triangle n. N ‐ 2 triangles are drawn.
GL_TRIANGLE_FAN Draws a connected group of triangles. one triangle is defined for
each vertex presented after the first two vertices. Vertices 1, n +
1, n + 2 define triangle n. N ‐ 2 triangles are drawn.
GL_QUADS Treats each group of four vertices as an independent
quadrilateral. Vertices 4n ‐ 3, 4n ‐ 2, 4n ‐ 1, and 4n define
quadrilateral n. N/4 quadrilaterals are drawn.
GL_QUAD_STRIP Draws a connected group of quadrilaterals. One quadrilateral is
defined for each pair of vertices presented after the first pair.
Vertices 2n ‐ 1, 2n, 2n + 2, and 2n + 1 define quadrilateral n. N/2
‐ 1 quadrilaterals are drawn. Note that the order in which vertices
are used to construct a quadrilateral from strip data is different
from that used with independent data.
GL_POLYGON Draws a single, convex polygon. Vertices 1 through N define this
polygon.
Values Meaning
GL_COLOR_BUFFER_BIT The buffers currently enabled for color writing.
GL_DEPTH_BUFFER_BIT The depth buffer.
GL_ACCUM_BUFFER_BIT The accumulation buffer.
GL_STENCIL_BUFFER_BI The stencil buffer.
T
glClearColor:‐ The glClearColor function specifies clear values for the color buffers.
Syntax :void glClearColor(red, green, blue, alpha);
red :‐ The red value that glClear uses to clear the color buffers. The default value is zero.
green :‐The green value that glClear uses to clear the color buffers. The default value is zero.
blue :‐ The blue value that glClear uses to clear the color buffers. The default value is zero.
alpha :‐The alpha value that glClear uses to clear the color buffers. The default value is zero.
glColor3i :‐ Sets the current color.
Syntax :void glColor3i(GLint red, GLint green, GLint blue);
red :‐ The new red value for the current color.
green :‐The new green value for the current color.
blue :‐ The new blue value for the current color.
glColor3fv:‐ Sets the current color from an already existing array of color values.
Syntax :void glColor3fv(const GLfloat *v);
V:‐ A pointer to an array that contains red, green, and blue values.
glEnable, glDisable :‐ The glEnable and glDisable functions enable or disable OpenGL
capabilities.
Syntax :void glEnable(GLenum cap); void glDisable(GLenum cap);
cap :‐ Both glEnable and glDisable take a single argument, cap, which can assume
one of the following values.
Values Meaning
GL_DEPTH_TEST If enabled, do depth comparisons and update the depth
buffer. See glDepthFunc and glDepthRange.
GL_LINE_SMOOTH If enabled, draw lines with correct filtering. If disabled, draw
aliased lines.See glLineWidth.
GL_LINE_STIPPLE If enabled, use the current line stipple pattern when drawing
lines. See glLineStipple.
GL_NORMALIZE If enabled, normal vectors specified with glNormal are
scaled to unit length after transformation. See glNormal.
GL_POINT_SMOOTH If enabled, draw points with proper filtering. If disabled,
draw aliased points. See glPointSize.
glFlush:‐ The glFlush function forces execution of OpenGL functions in finite time.
Syntax: void glFlush(void); This function has no parameters.
glFrustum:‐ The glFrustum function multiplies the current matrix by a perspective matrix.
Syntax: void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble
top, GLdouble zNear, GLdouble zFar);
Value Meaning
GL_AMBIENT The params parameter contains four floating‐point values that specify the
ambient RGBA intensity of the light.Floating‐point values are mapped
directly. Neither integer nor floating‐point values are clamped. The default
ambient light intensity is (0.0, 0.0, 0.0, 1.0).
GL_DIFFUSE The params parameter contains four floating‐point values that specify the
diffuse RGBA intensity of the light. Floating‐point values are mapped
directly. Neither integer nor floating‐point values are clamped. The default
diffuse intensity is (0.0, 0.0, 0.0, 1.0) for all lights other than light zero.
The default diffuse intensity of light zero is (1.0, 1.0, 1.0, 1.0).
GL_SPECULAR The params parameter contains four floating‐point values that specify the
specular RGBA intensity of the light. Floating‐point values are mapped
directly. Neither integer nor floating‐point values are clamped. The default
specular intensity is (0.0, 0.0, 0.0, 1.0) for all lights other than light zero.
The default specular intensity of light zero is (1.0, 1.0, 1.0, 1.0).
GL_POSITION The params parameter contains four floating‐point values that specify the
position of the light in homogeneous object coordinates. Both integer and
floating‐point values are mapped directly. Neither integer nor floating‐
point values are clamped.
param :‐ Specifies the value that parameter pname of light source light will be set to.
glLoadIdentity :‐ The glLoadIdentity function replaces the current matrix with the identity
matrix.
Syntax :void WINAPI glLoadIdentity(void);’
glMatrixMode:‐ The glMatrixMode function specifies which matrix is the current matrix.
Values Meaning
GL_MODELVIEW Applies subsequent matrix operations to the model view matrix
stack.
GL_PROJECTION Applies subsequent matrix operations to the projection matrix
stack.
GL_TEXTURE Applies subsequent matrix operations to the texture matrix stack.
glOrtho:‐ The glOrtho function multiplies the current matrix by an orthographic matrix.
Syntax:‐ void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble
top, GLdouble zNear, GLdouble zFar);
left :‐The coordinates for the left vertical clipping plane.
right :‐ The coordinates for the right vertical clipping plane.
Bottom:‐ The coordinates for the bottom horizontal clipping plane.
top :‐ The coordinates for the top horizontal clipping plans.
zNear :‐ The distances to the nearer depth clipping plane. This distance is
negative if the plane is to be behind the viewer.
zFar :‐ The distances to the farther depth clipping plane. This distance is
negative if the plane is to be behind the viewer.
glPointSize :‐ The glPointSize function specifies the diameter of rasterized points.
Syntax :‐ void glPointSize(GLfloat size);
Size:‐The diameter of rasterized points. The default is 1.0.
glPushMatrix & glPopMatrix:‐ The glPushMatrix and glPopMatrix functions push and pop
the current matrix stack.
glRotatef:‐ The glRotatef function multiplies the current matrix by a rotation matrix.
Syntax :‐ void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
angle :‐ The angle of rotation, in degrees.
X :‐ The x coordinate of a vector.
y :‐ The y coordinate of a vector.
z :‐ The z coordinate of a vector.
glScalef :‐ The glScaled and glScalef functions multiply the current matrix by a general
scaling matrix.
Syntax :‐ void glScalef(GLfloat x, GLfloat y, GLfloat z);
x :‐ Scale factors along the x axis.
y :‐ Scale factors along the y axis.
z :‐ Scale factors along the z axis.
#include <GL/glut.h>
#include <stdio.h>
int x1, y1, x2, y2;
void myInit() {
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 500, 0, 500);
}
void draw_pixel(int x, int y) {
glBegin(GL_POINTS);
glVertex2i(x, y);
glEnd();
}
void draw_line(int x1, int x2, int y1, int y2) {
int dx, dy, i, e;
int incx, incy, inc1, inc2;
int x,y;
dx = x2-x1;
dy = y2-y1;
if (dx < 0) dx = -dx;
if (dy < 0) dy = -dy;
incx = 1;
if (x2 < x1) incx = -1;
incy = 1;
if (y2 < y1) incy = -1;
x = x1; y = y1;
if (dx > dy) {
draw_pixel(x, y);
e = 2 * dy-dx;
inc1 = 2*(dy-dx);
inc2 = 2*dy;
for (i=0; i<dx; i++) {
if (e >= 0) {
y += incy;
e += inc1;
}
else
e += inc2;
x += incx;
draw_pixel(x, y);
}
} else {
draw_pixel(x, y);
e = 2*dx-dy;
inc1 = 2*(dx-dy);
inc2 = 2*dx;
for (i=0; i<dy; i++) {
if (e >= 0) {
x += incx;
e += inc1;
}
else
e += inc2;
y += incy;
draw_pixel(x, y);
}
}
}
void myDisplay() {
draw_line(x1, x2, y1, y2);
glFlush();
}
int main(int argc, char **argv) {
printf( "Enter (x1, y1, x2, y2)\n");
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
glutCreateWindow("Bresenham's Line Drawing");
myInit();
glutDisplayFunc(myDisplay);
glutMainLoop();
return 0;
}
SAMPLE OUTPUT:
STUDENT'S OBSERVATIONS
2. Create and rotate a triangle about the origin and a fixed point.
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h>
/* Set initial display-window size. */
GLsizei winWidth = 600, winHeight = 600;
/* Set range for world coordinates. */
GLfloat xwcMin = 0.0, xwcMax = 225.0;
GLfloat ywcMin = 0.0, ywcMax = 225.0;
class wcPt2D {
public:
GLfloat x, y;
};
typedef GLfloat Matrix3x3 [3][3];
Matrix3x3 matComposite;
const GLdouble pi = 3.14159;
void init (void)
{
/* Set color of display window to white. */
glClearColor (1.0, 1.0, 1.0, 0.0);
}
/* Construct the 3 x 3 identity matrix. */
void matrix3x3SetIdentity (Matrix3x3 matIdent3x3)
{
GLint row, col;
for (row = 0; row < 3; row++)
for (col = 0; col < 3; col++)
matIdent3x3 [row][col] = (row == col);
}
void matrix3x3PreMultiply (Matrix3x3 m1, Matrix3x3 m2)
{
GLint row, col;
Matrix3x3 matTemp;
for (row = 0; row < 3; row++)
for (col = 0; col < 3 ; col++)
matTemp [row][col] = m1 [row][0] * m2 [0][col] + m1 [row][1] *
m2 [1][col] + m1 [row][2] * m2 [2][col];
for (row = 0; row < 3; row++)
for (col = 0; col < 3; col++)
m2 [row][col] = matTemp [row][col];
}
SAMPLE OUTPUT:
STUDENT'S OBSERVATIONS
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);
glRotatef(theta[2],0.0,0.0,1.0);
glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE, cubeIndices);
glFlush();
glutSwapBuffers();
}
void spinCube()
{
theta[axis]+=2.0;
if(theta[axis]>360.0) theta[axis]-=360.0;
glutPostRedisplay();
}
Output
STUDENT'S OBSERVATIONS
4. Draw a color cube and allow the user to move the camera suitably to experiment with
perspective viewing.
#include<stdlib.h>
#include<GL/glut.h>
GLfloat vertices[][3]={{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},
{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}};
GLfloat colors[][3]={{0.0,0.0,0.0},{1.0,0.0,0.0},
{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},
{1.0,0.0,1.0},{1.0,1.0,1.0},{0.0,1.0,1.0}};
void colorcube()
{
polygon(0,3,2,1);
polygon(2,3,7,6);
polygon(0,4,7,3);
polygon(1,2,6,5);
polygon(4,5,6,7);
polygon(0,1,5,4);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(viewer[0], viewer[1],viewer[2],0.0,0.0,0.0,
0.0,1.0,0.0);
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);
glRotatef(theta[2],0.0,0.0,1.0);
colorcube();
glFlush();
glutSwapBuffers();
}
OutPut:
STUDENT'S OBSERVATIONS
void display()
{
void myinit()
{
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,499.0,0.0,499.0);
}
STUDENT'S OBSERVATIONS
#include<GL/glut.h>
#include<stdio.h>
void displaySolid(void)
{
GLfloat mat_ambient[]={0.7f,0.7f,0.7f,1.0f};
GLfloat mat_diffuse[]={0.5f,0.5f,0.5f,1.0f};
GLfloat mat_specular[]={1.0f,1.0f,1.0f,1.0f};
GLfloat mat_shininess[]={50.0f};
glMaterialfv(GL_FRONT,GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR, mat_specular);
GLfloat lightintensity[]={0.7f,0.7f,0.7f,1.0f};
GLfloat lightposition[]={2.0f,6.0f,3.0f,0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, lightposition);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightintensity);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winht=1.0;
glOrtho(-winht*64/48, winht*64/48, -winht, winht,
0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3,1.3,2.0,0.0,0.25,0.0,0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0.6,0.38,0.5);
glRotated(30,0,1,0);
glutSolidTeapot(0.08);
glPopMatrix();
glPushMatrix();
glTranslated(0.4,0,0.4);
table(0.6,0.02,0.02,0.3);
glPopMatrix();
wall(0.02);
glPushMatrix();
glRotated(90.0,0.0,0.0,1.0);
wall(0.02);
glPopMatrix();
glPushMatrix();
glRotated(-90.0,1.0,0.0,0.0);
wall(0.02);
glPopMatrix();
glFlush();
}
Output
STUDENT'S OBSERVATIONS
#include<stdlib.h>
#include<stdio.h>
#include<GL/glut.h>
typedef float point[3];
point v[]={{0.0,0.0,1.0},{0.0,1.0,0.0},
{-1.0,-0.5,0.0}, {1.0,-0.5,0.0}};
int n;
void triangle(point a,point b,point c)
{
glBegin(GL_POLYGON);
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
glEnd();
}
void divide_triangle(point a,point b,point c,int m)
{
point v1,v2,v3;
int j;
if(m>0)
{
for(j=0;j<3;j++)
v1[j]=(a[j]+b[j])/2;
for(j=0;j<3;j++)
v2[j]=(a[j]+c[j])/2;
for(j=0;j<3;j++)
v3[j]=(c[j]+b[j])/2;
divide_triangle(a,v1,v2,m-1);
divide_triangle(c,v2,v3,m-1);
divide_triangle(b,v3,v1,m-1);
}
else(triangle(a,b,c));
}
void tetrahedron(int m)
{
glColor3f(1.0,0.0,0.0);
divide_triangle(v[0],v[1],v[2],m);
glColor3f(0.0,1.0,0.0);
divide_triangle(v[3],v[2],v[1],m);
glColor3f(0.0,0.0,1.0);
divide_triangle(v[0],v[3],v[1],m);
glColor3f(0.0,0.0,0.0);
divide_triangle(v[0],v[2],v[3],m);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
Output:
STUDENT'S OBSERVATIONS
8. Develop a menu driven program to animate a flag using Bezier Curve algorithm
#include<GL/glut.h>
#include<stdio.h>
#include<math.h>
#define PI 3.1416
OUTPUT
STUDENT'S OBSERVATIONS
9. Develop a menu driven program to fill the polygon using scan line algorithm
#include<stdio.h>
#include<GL/glut.h>
float x1,x2,x3,x4,y1,y2,y3,y4;
void scanfill(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)
{
int le[500],re[500];
int i,y;
for(i=0;i<500;i++)
{
le[i]=500;
re[i]=0;
}
edgedetect(x1,y1,x2,y2,le,re);
edgedetect(x2,y2,x3,y3,le,re);
edgedetect(x3,y3,x4,y4,le,re);
edgedetect(x4,y4,x1,y1,le,re);
for(y=0;y<500;y++)
{
if(le[y]<=re[y])
for(i=(int)le[y];i<(int)re[y];i++)
draw_pixel(i,y);
}
}
void display()
{
x1=200.0;y1=200.0;x2=100.0;y2=300.0;x3=200.0;
y3=400.0;x4=300.0;y4=300.0;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glBegin(GL_LINE_LOOP);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glVertex2f(x4,y4);
glEnd();
scanfill(x1,y1,x2,y2,x3,y3,x4,y4);
glFlush();
void myinit()
{
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(1.0,0.0,0.0);
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,499.0,0.0,499.0);
}
Output
STUDENT'S OBSERVATIONS
Viva-Questions
PART-B
Student should develop mini project on the topics mentioned below or similar
applications using Open GL API. Consider all types of attributes like color, thickness,
styles, font, background, speed etc., while doing mini project.
(During the practical exam: the students should demonstrate and answer Viva-Voce)
Sample Topics:
Simulation of concepts of OS, Data structures, algorithms etc
Contents (Template)
1. Introduction
1.1 Introduction of mini project
1.2 OpenGL concepts
1.3 Scope and applications
2. Literature survey
2.1 related work
2.2 problem statement
2.3 proposed system
2.4 advantages and disadvantages
3. Software, Hardware and Functional Requirements
3.1 Minimum hardware and software requirements
3.2 functional requirements
4. Analysis and Design
4.1 Architecture of proposed system
4.2 High level and low level design
5. Implementation
5.1 Algorithm
5.2 Module description
5.3 Application development
6. Discussions and Snapshots
7. Conclusion
Bibliography
Appendices-full code in a very small font size and single line spacing (as few
pages as possible)
2. Before taking final print out, the approval of the concerned guide(s) is mandatory and
suggested corrections if any, must be incorporated.