You are on page 1of 23

Boundary Simulation

Department of CSE Page 1




CHAPTER 1
INTRODUCTION
Computer Graphics is concerned with all aspects of producing pictures or images using
a computer. Interactive Computer Graphics (ICG) involves two way communications between
the user and the computer.

1.1 Aim of the Project
The aim of project is how to use the GLU polygon tessellator to determine the 2D
boundary of OpenGL rendered objects.
1.2 Project Description
The project boundary simulation is implemented on the basic platform OpenGL which
included in our curriculum. This project is developed using various APIs. This project makes use of
library called as GLUT.
The basic concept of the project involves the use of various textures and primitives to design different
screen savers. The user is provided with a menu which can be viewed by right clicking the mouse. The
project is coded for various options which can be done by right clicking the mouse on previously
developed pattern. Various options present in the menu are:
Torus: select a torus object.
Cube: select a cube object.
Sphere: select a sphere object.
Icosahedron: select a icosahedrons object.
Teapot: select the teapot.
Change dimension: change the dimension of object from 2D to 3D and vice versa.
Exit: exit from the window.


Boundary Simulation

Department of CSE Page 2

1.3 COMPUTER GRAPHICS
The dominant characteristic of this new millennium is how computer and communication
technologies have become dominant forces in our life. Activities as wide ranging as
filmmaking, publishing, banking, and education continue to undergo revolutionary changes as
these technologies alter the ways in which we conduct our daily activities. The combination of
computers, networks, and the complex visual systems, through computer graphics, has led to
new ways of displaying information, seeing virtual worlds and communicating with people and
machines

Computer graphics is concerned with all aspects of producing pictures or images using a
computer. The field began humbly almost 50 years ago, with a display of few lines on a
cathode-ray-tube; now, we can create images by computer that are indistinguishable from
photographs of real objects. We routinely train pilots with simulated airplanes, generating
graphical displays of a virtual environment of real time. Feature length movies made entirely
by computer have been successful, both critically and financially. Massive multiplayer games
can involve tens of thousands of concurrent participants.

1.4 APPLICATIONS OF COMPUTER GRAPHICS
Display of information
Design
Simulation and animation
User interfaces

DISPLAY OF INFORMATION
Classical graphics technique arose as a medium to convey information among people. We have
computer plotting packages that provide a variety of plotting techniques and color tools that
can handle multiple large data sets.
The field of information visualization is becoming increasingly more important as we
have to deal with understanding complex phenomena from problems in bioinformatics
to detecting security threats.
The field of scientific visualization provides graphical tools that help the researchers
interpret the fast quantity of data that they generate.
Boundary Simulation

Department of CSE Page 3

Medical imaging posses interesting and important data analysis problems. Modern
imaging technologies such as computed tomography (CT), magnetic resonance imaging
(MRI), ultrasound and positron emission tomography (PET)-generate 3D data that must
be subjected to algorithmic manipulation to provide useful information.

DESIGN
Professions such as engineering and architectures are concerned with design. Starting
with a set of specifications, engineers and architects seek a cost effective and esthetical
solution that satisfies the specifications.
The use of interactive graphical tools in computer aided design (CAD) pervades fields
including as architecture , medical engineering , the design of very-large-scale
integrated (VLSI) circuits, and the creation of characters for animation.

SIMULATION AND ANIMATION
Graphics system evolved to be capable of generating sophisticated images in real
time, engineers and researchers began to use them as simulators. One of the most
important uses has been in the training of pilots. The use of special PLSI chips has led
to a generation of arcade, games as sophisticated as flight simulators.
The simulator can be used for designing the robot, planning its path, and simulating its
behaviour in complex environment. The success of flight simulators led to the use of
computer graphics for animation in the TV, motion picture and advertising industries.
Entire animated movies can now be made by computers at a cost less than that of
movies made with tradition hand animation techniques.
The graphic technology for games, both in the form of the graphics processing units
that are on graphics cards in personal computers and in game boxes such as the Xbox
and the play stations, is being used for simulation rather than expensive specialized
hardware.

USER INTERFACES
Our interaction with computers has become dominated by a visual paradigm that includes
windows, icons, menus and a pointing device such as a mouse. From users perspective,
winding system such as the X window system, Microsoft windows, and the Macintosh Os x
defer only in derails
Boundary Simulation

Department of CSE Page 4

Millions of people have become Internet users. Their access is through graphical
network browsers, such as Firefox and Internet explorer. Although we are familiar with
style of graphical user interface used on most workstations, advances in computer
graphics have made possible other forms of interfaces.
OpenGL doesn't provide high-level commands for describing models of three-
dimensional objects. Such commands might allow you to specify relatively complicated
shapes such as automobiles, parts of the body, airplanes, or molecules.
With OpenGL, you must build up your desired model from a small set of geometric
primitives - points, lines, and polygons.



program






Figure1.1 Application Programmers Model of Graphics System
The interface between an application program and a graphics system can be specified
through a set of functions the resides in a graphics library .These specification are
called the application programmers interface (API).The application programmers
model of the system is shown in Figure 1.1. The application programmer sees only the
API and is thus shielded from the details of both the hardware and the software
implementation of the graphics library.

1.5 OPENGL
OpenGL is a library of functions for fast 3D rendering. OpenGL does not have any way to
obtain input from user. As a software interface for graphic hardware OpenGL main purpose is
to render 2D and 3D objects into frame buffer. These objects are described as a sequence of
vertices or pixels. OpenGL performs several processing steps of these data to convert it into
pixel to form the final desired image in the frame buffer.

Application
program
Graphics
library
(API)

Drivers
Mouse
Display
Boundary Simulation

Department of CSE Page 5



OpenGL is a hardware and system independent interface. An OpenGL application will work on
every platform as long as there as an installed implementation. Because their systems
independent there are no function to create windows etc, but there are helper functions for each
platform. A very useful thing is GLUT.

1.5.1 GLUT
It is a complete API written by Mark Kilgard, which lets us create windows and handle
the messages. It exists for several platforms that mean that a program, which uses GLUT,
can be compiled on many platforms without any changes in the code.



Figure 1.2 Library organization
ADDITIONAL LIBRARIES
There are two libraries that we have that came with OpenGL:
1: GLU: It is a set of utility functions. They are easy way of doing things that is tedious with
raw OpenGL.
2: GLX: It allows you to open up X window and link it up with OpenGL so that it will draw to
that window.


OpenGL
application
Program
GLU
GL
GLUT
GLX
Xlib, Xtk

Frame
Buffer

Boundary Simulation

Department of CSE Page 6


HOW OPENGL WORKS
To be hardware independent OpenGL provides its own data types. They all begin with GL.
Example: GLfloat, Glint
There are also many symbolic constants ;they all begin with GL,like
GL_POINTS,GL_POLYGON.
Finally commands have prefix gl. Example: glVertex3f.

OPENGL VERSION AND EXTENSIONS
One of the main features of OpenGL is that the API has been very stable there were upgrades
from OpenGL 1.0 through OpenGL 1.5 that were released over a 10-year period, each of which
was compatible with previous releases. OpenGL 2.0, which was released in 2004, was a major
upgrade but still retains code compatibility with earlier versions. The current release is
OpenGL 2.1. Thus, any program written on an older version of OpenGL runs as expected on
later version. Changes to OpenGL reflect advances in hardware that became common to many
graphics processors

1.6 Graphics Function
Function calls Outputs

Data Input
Figure 1.3
Our basic model of a graphics package is a black box, a term that engineers use to
denote a system whose properties are described only by its inputs and outputs. We describe an
API through the functions in its library. Some of the functions are:
The primitive functions define the low-level objects or atomic entities that our system
can display.
Attribute functions allow us to perform operations ranging from choosing the color
with which we display a line segment, to picking a pattern with which to fill the inside
of a polygon, to selecting a typeface for the titles of a graph.
Application
programs
Graphics
system
ip /op
devices
Boundary Simulation

Department of CSE Page 7

Transformation function allows carrying out transformations of objects, such as
rotation, translation, and scaling.
A set of input functions allow us to deal with the diverse forms of input that
characterize modern graphics systems.
The control functions enable us to communicate with the window systems, to initialize
our programs, and to deal with any errors that take place during the execution of
programs.




















Boundary Simulation

Department of CSE Page 8

CHAPTER 2
REQUIREMENT SPECIFICATION
A software requirement definition is an abstract description of the services which the
system should provide, and the constraints under which the system must operate. It should only
specify the external behaviour of the system.

2.1 Functional Requirements
Functional Requirements defines the internal working of the software, i.e., the
calculations, technical details, data manipulation and processing and other specific
functionality that show how the cases are to be satisfied and how they are supported by non-
functional requirements, which impose constraints on the design or the implementation.
The following are the Functional requirements
The ability to display the menu when the ENTER button is clicked.
When the corresponding menu is selected, the corresponding option should be
performed.
Move the vehicle only when green light is on .
Stop the vehicle when red light is on .
Provide the signal simulation environment to the user .

2.2 Non Functional Requirements
Nonfunctional requirements are requirements which specify criteria that can be used to
judge the operation of the system, rather than specific behaviors. This should be contrasted
with functional requirements that specify specific behavior or functions. Typical nonfunctional
requirements are reliability and scalability. Nonfunctional requirements are constraints,
quality attributes and quality of service requirements.
The following are the Non Functional Requirements:
The application should provide a simple interface


Boundary Simulation

Department of CSE Page 9

2.3 Software and Hardware Requirements
Software Requirements
1. OPERATING SYSTEM : Windows XP or Higher version
2. FRONT END : Microsoft Visual Studio 2005(.NET 2.0).
3. CODING LANGUAGE : C, C++
Hardware Requirements
This software requires a hardware requirement of a processor of speed 333 MHz, 32MB or
above RAM capacity, a graphic card, a Keyboard and a min.100kb of hard disk space.

1. SYSTEM : Pentium IV 2.4 GHz or above
2. HARD DISK : 20 GB or above
3. MONITOR : 15 VGA color
4. RAM : 256 MB
5. Micro Processor : Pentium 4
6. keyboard : 1
7. CPU Clock : 166MHZ Onwards
















Boundary Simulation

Department of CSE Page 10

CHAPTER 3
DESIGN
3.1 Initialization
Initialize to interact with the windows. Initialize the display mode- double buffer and depth
buffer. Initialize the various callback functions for creating 3d objects, mouse interface and
keyboard interface, for displaying and selecting the interactive options, for selecting option
from menu or to rotate the object. Initialize the window position and size and create the
window to display the output.
3.2 Flow of control























Start
Main
Initialise openGL()
Callback function.
MENU
C1
Boundary Simulation

Department of CSE Page 11








\















Figure 1.4 Flow chart


TORUS
CUBE
ISOHEDRON
TEAPOT
CLOSE
Display
Solid torus
Display
Cube
Display
Tea pot
Display
Isohedron
KEYBOARD
up down left
right
Rotate
upward

Rotate
down

Rotate
right

Rotate
left

C1
STOP
Boundary Simulation

Department of CSE Page 12

CHAPTER 4
IMPLEMENTATION

To implement the current system we have used different functions of our project which are as
follows:
4.1 USER FUNCTIONS
Render():is the process of generating an image from a model, by means of a software
program. The model is a description of three dimensional objects in a strictly defined
language or data structure. It would contain geometry, viewpoint, texture and lighting
information.
Display():the function is called by glutDisplayfunc(), this function enable and disable
the lighting,depth test and cull_face according to the value of boundary.
Special():This function gets the input from the keyboard and rotate the object in
different axis . It checks for the keys such as up, down, left and right.
determineBoundary(): this function find out the external edges (boundary) of the
given object.
Text():the function prints a text in the screan.
Menu() :The function receive the value from the menu displayed on screan and do the
task according to the case. And exits from the window when clicked on close.

4.2 BUILT IN FUNCTIONS
GlTranslate (): Alters the current matrix by a displacement of(x,y,z).TYPE is either
GLfloat or GLdouble.
glutCreateMenu(): Returns an identifier for a top level menu and register the callback
function f that returns an integer value corresponding to the menu entry selected.
GlutAddMenuEntry (): glutAddMenuEntry adds a menu entry to the bottom of the
current menu. The string name will be displayed for the newly added menu entry. If
the menu entry is selected by the user, the menu's callback will be called passing value
as the callback's parameter.
GlLoadIdentity (): replaces the current matrix with the identity matrix. It is
semantically equivalent to calling glLoadMatrix with the 4X4 identity matrix.
Boundary Simulation

Department of CSE Page 13

GlClearColor (): specifies the red, green, blue, and alpha values used by glClear to
clear the color buffers. Values specified by glClearColor are clamped to the range
[0 1].
GlMatrixMode (): sets the current matrix mode. mode can assume one of four values:
GL_MODELVIEW -Applies subsequent matrix operations to the modelview
matrix stack.
GL_PROJECTION -Applies subsequent matrix operations to the projection
matrix stack.
GluPerspective (): specifies a viewing frustum into the world coordinate system. In
general, the aspect ratio in gluPerspective should match the aspect ratio of the
associated viewport.
glDisable (): disable server-side GL capabilities.
glEnable (): enable server-side GL capabilities.
glutSolidTorus (): render a solid or wireframe torus (doughnut) respectively.
glutSolidCube (): render a solid or wireframe cube respectively.
glutSolidSphere (): Renders a sphere centered at the modeling coordinates origin of
the specified radius.
glutSolidIcosahedron (): This function draws a regular, solid 20-sided polyhedron
centered at the origin. The distance from the origin to the vertices is 1.
glutBitmapCharacter ():renders a bitmap character using OpenGL.
gluTessBeginContour():delimit the definition of a polygon contour. Within each
gluTessBeginContour /gluTessEndContour pair, there can be zero or more calls to
gluTessVertex. The vertices specify a closed contour (the last vertex of each contour is
automatically linked to the first.
glFeedbackBuffer():function controls feedback. Feedback, like selection, is an
OpenGL mode. The mode is selected by calling glRenderMode with
GL_FEEDBACK. When OpenGL is in feedback mode, no pixels are produced by
rasterization. Instead, information about primitives that would have been rasterized is
fed back to the application using OpenGL.
gluNewTess() : function creates and returns a pointer to a new tessellation object.
Refer to this object when calling tessellation functions. A return value of zero means
there is not enough memory to allocate to the object.

Boundary Simulation

Department of CSE Page 14

GLU_TESS_BEGIN():The begin callback is invoked like glBegin to indicate the start
of a (triangle) primitive. The function takes a single argument of type GLenum. If the
GLU_TESS_BOUNDARY_ONLY property is set to GL_FALSE, then the argument
is set to either GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, or
GL_TRIANGLES. If the GLU_TESS_BOUNDARY_ONLY property is set to
GL_TRUE, then the argument will be set to GL_LINE_LOOP.
glLightfv():this function is used to set up the properties of proper light souce.
GLU_TESS_BOUNDARY_ONLY():Specifies a Boolean value (set value to
GL_TRUE or GL_FALSE). When you set value to GL_TRUE, a set of closed contours
separating the polygon interior and exterior is returned instead of a tessellation.
Exterior contours are oriented counterclockwise with respect to the normal; interior
contours are oriented clockwise. The GLU_TESS_BEGIN and
GLU_TESS_BEGIN_DATA callbacks use the type GL_LINE_LOOP for each
contour.














Boundary Simulation

Department of CSE Page 15

CHAPTER 5
TESTING
Testing in general means validation and verification. It shows that the system
conforms to its specifications and system meets all expectation of the user. It involves 5
different kind of testing.

5.1 TEST CASES FOR KEYBOARD:

Sl
No.
Test case
Description
Expected Result Actual Result Remarks

1. Press UP KEY Rotate the 3d object
In upward direction
Rotate the 3d object
In upward direction
PASS
2. Press DOWN
KEY
Rotate the 3d object
In left direction
Rotate the 3d object
In left direction
PASS
3. Press LEFT
key
Rotate the 3d object
In left direction
Rotate the 3d object
In left direction
PASS
4. Press Right
Key
Rotate the 3d object
In right direction
Rotate the 3d object
In right direction
PASS

Table1.1 test case for keyboard










Boundary Simulation

Department of CSE Page 16


CHAPTER 6
6.1 SNAPSHOTS



Figure 1.5 Displaying menu when right clicked.




Boundary Simulation

Department of CSE Page 17



Figure 1.6 3D view of cube



Boundary Simulation

Department of CSE Page 18





The boundary of cube


Boundary Simulation

Department of CSE Page 19





Figure 1.7 3D view of torus


Boundary Simulation

Department of CSE Page 20




Figure 1.8 boundary of the torus.








Boundary Simulation

Department of CSE Page 21

CHAPTER 7
CONCLUSION

The project BOUNDARY SIMULATION has many features in it which uses maximum
concepts provided in OpenGL such as lighting, shading, viewing, rendering etc. It has been
provided with simple interfaces so that the user can use it without the thorough knowledge of
OpenGL.
This is very reliable graphics package supporting various primitive objects like polygon,
line loops, etc. Also color selection, menu, keyboard based interface are included.







Boundary Simulation

Department of CSE Page 22


CHAPTER 8
FUTURE ENHANCEMENTS

In this package we may consider the further enhancements like-
We can change the pattern some different textures.

Different colors can be implemented for the objects.

The objects size can be increased and decreased.

Add different types of lighting can be used.

Object can be moved in different directions

Different viewing can be used.



Boundary Simulation

Department of CSE Page 23

CHAPTER 9
BIBLIOGRAPHY
Book References:
[1] Edward Angels Interactive Computer Graphics Pearson Edition 5
th
2007
[2] EditionM.Baumann OpenGL Programming with Glut. First Edition
[3] Yeshwant Kanetkar Computer Graphics with C. Third Edition

Websites:
[4] http://www.opengl.org
[5]http://www.wikipedia.com

You might also like