Computer Graphics involves technology to access. The Process transforms and presents information in a visual form. The role of computer graphics insensible.
Graphics on the computer are produced by using various algorithms and techniques. This tutorial describes how a rich visual experience is provided to the user by explaining how all these processed by the computer.
openGL basics for sample program (1).pptHIMANKMISHRA2
The document outlines the course learning objectives and outcomes for a Computer Graphics & Visualization laboratory course using OpenGL. The course aims to teach simple algorithms and implementation of line drawing, clipping, and 2D/3D modeling and rendering using OpenGL functions. Students will complete programming assignments to demonstrate techniques like Bézier curves, polygon filling, and develop a mini-project using OpenGL APIs.
The document outlines the course learning objectives and outcomes for a Computer Graphics & Visualization laboratory course using OpenGL. The course aims to teach simple algorithms and implementation of line drawing, clipping, and 2D/3D modeling and rendering using OpenGL functions. Students will complete programming assignments to demonstrate techniques like Bézier curves, polygon filling, and develop a mini-project using OpenGL APIs.
The document discusses graphics programming and OpenGL. It introduces OpenGL, describing it as a hardware-independent interface consisting of over 700 commands. It outlines the OpenGL API, including primitive functions, attribute functions, and viewing functions. It also covers OpenGL primitives like points, lines, and polygons, as well as attributes like color. It explains orthographic and two-dimensional viewing in OpenGL.
This document provides an introduction to OpenGL with code samples. It discusses the history and overview of OpenGL, versions, philosophy, functionality, usage, conventions, basic concepts like the rendering pipeline and primitives. It also covers environment setup for using OpenGL with Windows SDK and GLUT as well as providing code samples. The document serves as a high-level overview of OpenGL for developers.
The document introduces OpenGL and GLUT (OpenGL Utility Toolkit). It discusses that OpenGL is a graphics library for rendering 2D and 3D graphics, while GLUT provides a windowing and input framework. It then covers OpenGL fundamentals like rendering primitives, transformations, lighting and texture mapping. The goals are to demonstrate enough OpenGL to create interactive 3D graphics and introduce advanced topics. Sample code shows basic GLUT and OpenGL usage.
The 3D graphics rendering pipeline consists of 4 main stages: 1) vertex processing, 2) rasterization, 3) fragment processing, and 4) output merging. In vertex processing, transformations are applied to position objects in the scene and camera. Rasterization converts vertex data into fragments and performs operations like clipping and scan conversion. Fragment processing handles texture mapping and lighting. Output merging combines fragments and uses the z-buffer to remove hidden surfaces when displaying the final pixels.
This document discusses 3D graphics and OpenGL. It begins with an introduction to 3D concepts in OpenGL like using glVertex3f to specify 3D coordinates and constructing 3D objects from triangles. It then discusses several built-in OpenGL functions for drawing common 3D objects like cubes, spheres and cylinders. The document also covers key 3D transformations like projection, viewing and modeling transformations. It includes code examples for a basic 3D cube program and another drawing a cone. It ends with an example program demonstrating different projection transformations across four windows.
OpenGL is a software interface that allows programmers to create 2D and 3D graphics. It consists of over 150 commands to specify graphics objects and operations. OpenGL is designed to be hardware-independent and supported across different platforms. The OpenGL architecture uses a pipeline that processes commands from display lists, evaluates polynomials, performs per-vertex and per-fragment operations, and renders to the framebuffer. Key operations include geometric primitives, attributes, transformations, viewing, clipping, blending, and using a z-buffer for hidden surface removal. OpenGL programs utilize various functions to define graphics, attributes, views, inputs, and window controls.
This document discusses computer graphics primitives and functions in OpenGL. It covers topics like coordinate reference frames, point, line, curve and polygon functions. Screen coordinates map pixel positions, while world coordinates define object locations. Functions like glBegin, glVertex, glEnd are used to draw basic shapes by specifying vertex positions. Line types include GL_LINES, GL_LINE_STRIP and GL_LINE_LOOP. Filled polygons are drawn using similar functions between glBegin and glEnd.
Airplane game management system project report .pdfKamal Acharya
Graphics provides one of the most natural means of communicating with a
computer, since our highly developed 2D and 3D pattern recognition
allow us to perceive and process pictorialdata rapidly and efficiently.
Interactive computer graphics is the most important means of producing the
pictures since the invention of photography and television. It has the added
advantage that with the computer we can make pictures not only of concrete
real world objects butalso of abstract such as survey results.
This project is a collision evasion process implemented in the form
of a game. Here the useris allowed to control the movement of the plane
through a collision course. The objective is to evade the obstacles and
travel as far as possible. The plane’s upward movement is controlled by
the left mouse button. Holding and pressing the left mouse button takes
the plane higher and releasing the button results in the plane descending
down. As the distance covered increases the speed of the plane increases.
The main obstacles are buildings and clouds.
Lab Practices and Works Documentation / Report on Computer GraphicsRup Chowdhury
This is a report that I have prepared during my Computer Graphics Lab course. This contains the theoretical information that we learned in our introduction class. It also contains information on different computer graphics tools and software. It contains codes to create different and also the procedure.
1. Information on GLUT
2. Flag drawing with GLUT
3. DDA Algorithm
4. Midpoint Line Drawing Algorithm
5. Tansformation
Shadow Volumes on Programmable Graphics Hardwarestefan_b
The document proposes a method for computing shadow volumes on programmable graphics hardware. It involves using textures to store vertex positions and silhouette edge information. A quad texture stores data for each edge indicating whether it is silhouetted against each light source. During shadow rendering, this texture is used as a vertex array to extrude shadow quads for silhouetted edges. This approach avoids CPU processing and enables dynamic scenes by keeping all data on the GPU.
This document provides an introduction to computer graphics. It defines computer graphics as using a computer to produce and manipulate images on a screen by creating and manipulating models and images. It discusses modeling, rendering, imaging, animation, and hardware aspects of computer graphics. It provides examples of applications such as entertainment, design, scientific visualization, and more. It introduces the OpenGL graphics library and GLUT toolkit for window management in OpenGL programs. It provides conventions for OpenGL and GLUT functions and constants. Finally, it provides two short code examples of simple OpenGL programs to draw shapes and animate a rotating cube.
Advanced Game Development with the Mobile 3D Graphics APITomi Aarnio
This document provides an overview of the Mobile 3D Graphics API (M3G), which was designed for 3D graphics on mobile devices. It discusses why developers should use M3G and highlights some of its key features, including scene graphs, dynamic meshes, animation, textures, and more. The document also provides code examples for common tasks like setting up a camera, rendering a rotating cube, and creating animated keyframe sequences.
OpenGL is a standard graphics library used to render 2D and 3D graphics. It provides basic drawing primitives like points, lines, and polygons. OpenGL follows a graphics pipeline where commands are processed through various stages including transformations, rasterization, and finally writing to the framebuffer. Programmers use OpenGL by issuing commands to specify geometry and settings, which are then rendered to the screen independent of hardware.
The document provides an introduction to OpenGL programming. It discusses that OpenGL is a hardware-independent API for 3D graphics. It originated from SGI's GL library and was developed as the cross-platform OpenGL standard. The document outlines OpenGL's core functionality and architecture, as well as common libraries like GLUT and GLU. It provides examples of basic OpenGL programs and concepts like the rendering pipeline, coordinate systems, and event handling.
The document describes a graphics editor program that simulates the MS Paint application. It uses OpenGL for graphics rendering and GLUT for creating windows and rendering scenes. Key features implemented include tools for drawing shapes, images, and text. OpenGL functions are used for rendering while GLUT functions handle window creation and events. The design section covers header files, OpenGL/GLUT functions, and user-defined functions for tasks like drawing, erasing, and filling shapes. Implementation details are provided for various drawing algorithms and user interface elements.
1. The document is a lab manual for a computer graphics and visualization course that provides instructions and programs for students to implement.
2. It includes an introduction to OpenGL that describes it as a software interface for graphics hardware consisting of 150 commands. It also discusses OpenGL's state machine functionality and related libraries like GLUT and GLU.
3. The lab manual then provides 9 programs for students to complete related to topics like line drawing algorithms, 3D modeling, and animations. It concludes with questions for a viva exam.
CS 354 Transformation, Clipping, and CullingMark Kilgard
This document summarizes a lecture on graphics transformations, clipping, and culling. It discusses how vertex positions are transformed from object space to normalized device coordinates space using the modelview and projection matrices. It also covers generalized clipping against the view frustum and user-defined clip planes, as well as back face culling. The lecture provides examples of translation, rotation, scaling, orthographic, and perspective transformations.
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...ICS
Watch the video here: http://bit.ly/1TA24fU
OpenGL Fixed Function to Shaders - Porting a fixed function application to “modern” OpenGL - Webinar Mar 2016
Presented September 30, 2009 in San Jose, California at GPU Technology Conference.
Describes the new features of OpenGL 3.2 and NVIDIA's extensions beyond 3.2 such as bindless graphics, direct state access, separate shader objects, copy image, texture barrier, and Cg 2.2.
Texture mapping is a method for defining high frequency detail, surface texture, or color information on a computer-generated graphic or 3D model. Its application to 3D graphics was pioneered by Edwin Catmull in 1974.
In this paper, the cost and weight of the reinforcement concrete cantilever retaining wall are optimized using Gases Brownian Motion Optimization Algorithm (GBMOA) which is based on the gas molecules motion. To investigate the optimization capability of the GBMOA, two objective functions of cost and weight are considered and verification is made using two available solutions for retaining wall design. Furthermore, the effect of wall geometries of retaining walls on their cost and weight is investigated using four different T-shape walls. Besides, sensitivity analyses for effects of backfill slope, stem height, surcharge, and backfill unit weight are carried out and of soil. Moreover, Rankine and Coulomb methods for lateral earth pressure calculation are used and results are compared. The GBMOA predictions are compared with those available in the literature. It has been shown that the use of GBMOA results in reducing significantly the cost and weight of retaining walls. In addition, the Coulomb lateral earth pressure can reduce the cost and weight of retaining walls.
Ad
More Related Content
Similar to Computer Graphics involves technology to access. The Process transforms and presents information in a visual form. The role of computer graphics insensible. (20)
This document discusses 3D graphics and OpenGL. It begins with an introduction to 3D concepts in OpenGL like using glVertex3f to specify 3D coordinates and constructing 3D objects from triangles. It then discusses several built-in OpenGL functions for drawing common 3D objects like cubes, spheres and cylinders. The document also covers key 3D transformations like projection, viewing and modeling transformations. It includes code examples for a basic 3D cube program and another drawing a cone. It ends with an example program demonstrating different projection transformations across four windows.
OpenGL is a software interface that allows programmers to create 2D and 3D graphics. It consists of over 150 commands to specify graphics objects and operations. OpenGL is designed to be hardware-independent and supported across different platforms. The OpenGL architecture uses a pipeline that processes commands from display lists, evaluates polynomials, performs per-vertex and per-fragment operations, and renders to the framebuffer. Key operations include geometric primitives, attributes, transformations, viewing, clipping, blending, and using a z-buffer for hidden surface removal. OpenGL programs utilize various functions to define graphics, attributes, views, inputs, and window controls.
This document discusses computer graphics primitives and functions in OpenGL. It covers topics like coordinate reference frames, point, line, curve and polygon functions. Screen coordinates map pixel positions, while world coordinates define object locations. Functions like glBegin, glVertex, glEnd are used to draw basic shapes by specifying vertex positions. Line types include GL_LINES, GL_LINE_STRIP and GL_LINE_LOOP. Filled polygons are drawn using similar functions between glBegin and glEnd.
Airplane game management system project report .pdfKamal Acharya
Graphics provides one of the most natural means of communicating with a
computer, since our highly developed 2D and 3D pattern recognition
allow us to perceive and process pictorialdata rapidly and efficiently.
Interactive computer graphics is the most important means of producing the
pictures since the invention of photography and television. It has the added
advantage that with the computer we can make pictures not only of concrete
real world objects butalso of abstract such as survey results.
This project is a collision evasion process implemented in the form
of a game. Here the useris allowed to control the movement of the plane
through a collision course. The objective is to evade the obstacles and
travel as far as possible. The plane’s upward movement is controlled by
the left mouse button. Holding and pressing the left mouse button takes
the plane higher and releasing the button results in the plane descending
down. As the distance covered increases the speed of the plane increases.
The main obstacles are buildings and clouds.
Lab Practices and Works Documentation / Report on Computer GraphicsRup Chowdhury
This is a report that I have prepared during my Computer Graphics Lab course. This contains the theoretical information that we learned in our introduction class. It also contains information on different computer graphics tools and software. It contains codes to create different and also the procedure.
1. Information on GLUT
2. Flag drawing with GLUT
3. DDA Algorithm
4. Midpoint Line Drawing Algorithm
5. Tansformation
Shadow Volumes on Programmable Graphics Hardwarestefan_b
The document proposes a method for computing shadow volumes on programmable graphics hardware. It involves using textures to store vertex positions and silhouette edge information. A quad texture stores data for each edge indicating whether it is silhouetted against each light source. During shadow rendering, this texture is used as a vertex array to extrude shadow quads for silhouetted edges. This approach avoids CPU processing and enables dynamic scenes by keeping all data on the GPU.
This document provides an introduction to computer graphics. It defines computer graphics as using a computer to produce and manipulate images on a screen by creating and manipulating models and images. It discusses modeling, rendering, imaging, animation, and hardware aspects of computer graphics. It provides examples of applications such as entertainment, design, scientific visualization, and more. It introduces the OpenGL graphics library and GLUT toolkit for window management in OpenGL programs. It provides conventions for OpenGL and GLUT functions and constants. Finally, it provides two short code examples of simple OpenGL programs to draw shapes and animate a rotating cube.
Advanced Game Development with the Mobile 3D Graphics APITomi Aarnio
This document provides an overview of the Mobile 3D Graphics API (M3G), which was designed for 3D graphics on mobile devices. It discusses why developers should use M3G and highlights some of its key features, including scene graphs, dynamic meshes, animation, textures, and more. The document also provides code examples for common tasks like setting up a camera, rendering a rotating cube, and creating animated keyframe sequences.
OpenGL is a standard graphics library used to render 2D and 3D graphics. It provides basic drawing primitives like points, lines, and polygons. OpenGL follows a graphics pipeline where commands are processed through various stages including transformations, rasterization, and finally writing to the framebuffer. Programmers use OpenGL by issuing commands to specify geometry and settings, which are then rendered to the screen independent of hardware.
The document provides an introduction to OpenGL programming. It discusses that OpenGL is a hardware-independent API for 3D graphics. It originated from SGI's GL library and was developed as the cross-platform OpenGL standard. The document outlines OpenGL's core functionality and architecture, as well as common libraries like GLUT and GLU. It provides examples of basic OpenGL programs and concepts like the rendering pipeline, coordinate systems, and event handling.
The document describes a graphics editor program that simulates the MS Paint application. It uses OpenGL for graphics rendering and GLUT for creating windows and rendering scenes. Key features implemented include tools for drawing shapes, images, and text. OpenGL functions are used for rendering while GLUT functions handle window creation and events. The design section covers header files, OpenGL/GLUT functions, and user-defined functions for tasks like drawing, erasing, and filling shapes. Implementation details are provided for various drawing algorithms and user interface elements.
1. The document is a lab manual for a computer graphics and visualization course that provides instructions and programs for students to implement.
2. It includes an introduction to OpenGL that describes it as a software interface for graphics hardware consisting of 150 commands. It also discusses OpenGL's state machine functionality and related libraries like GLUT and GLU.
3. The lab manual then provides 9 programs for students to complete related to topics like line drawing algorithms, 3D modeling, and animations. It concludes with questions for a viva exam.
CS 354 Transformation, Clipping, and CullingMark Kilgard
This document summarizes a lecture on graphics transformations, clipping, and culling. It discusses how vertex positions are transformed from object space to normalized device coordinates space using the modelview and projection matrices. It also covers generalized clipping against the view frustum and user-defined clip planes, as well as back face culling. The lecture provides examples of translation, rotation, scaling, orthographic, and perspective transformations.
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...ICS
Watch the video here: http://bit.ly/1TA24fU
OpenGL Fixed Function to Shaders - Porting a fixed function application to “modern” OpenGL - Webinar Mar 2016
Presented September 30, 2009 in San Jose, California at GPU Technology Conference.
Describes the new features of OpenGL 3.2 and NVIDIA's extensions beyond 3.2 such as bindless graphics, direct state access, separate shader objects, copy image, texture barrier, and Cg 2.2.
Texture mapping is a method for defining high frequency detail, surface texture, or color information on a computer-generated graphic or 3D model. Its application to 3D graphics was pioneered by Edwin Catmull in 1974.
In this paper, the cost and weight of the reinforcement concrete cantilever retaining wall are optimized using Gases Brownian Motion Optimization Algorithm (GBMOA) which is based on the gas molecules motion. To investigate the optimization capability of the GBMOA, two objective functions of cost and weight are considered and verification is made using two available solutions for retaining wall design. Furthermore, the effect of wall geometries of retaining walls on their cost and weight is investigated using four different T-shape walls. Besides, sensitivity analyses for effects of backfill slope, stem height, surcharge, and backfill unit weight are carried out and of soil. Moreover, Rankine and Coulomb methods for lateral earth pressure calculation are used and results are compared. The GBMOA predictions are compared with those available in the literature. It has been shown that the use of GBMOA results in reducing significantly the cost and weight of retaining walls. In addition, the Coulomb lateral earth pressure can reduce the cost and weight of retaining walls.
Construction Materials (Paints) in Civil EngineeringLavish Kashyap
This file will provide you information about various types of Paints in Civil Engineering field under Construction Materials.
It will be very useful for all Civil Engineering students who wants to search about various Construction Materials used in Civil Engineering field.
Paint is a vital construction material used for protecting surfaces and enhancing the aesthetic appeal of buildings and structures. It consists of several components, including pigments (for color), binders (to hold the pigment together), solvents or thinners (to adjust viscosity), and additives (to improve properties like durability and drying time).
Paint is one of the material used in Civil Engineering field. It is especially used in final stages of construction project.
Paint plays a dual role in construction: it protects building materials and contributes to the overall appearance and ambiance of a space.
Design of Variable Depth Single-Span Post.pdfKamel Farid
Hunched Single Span Bridge: -
(HSSBs) have maximum depth at ends and minimum depth at midspan.
Used for long-span river crossings or highway overpasses when:
Aesthetically pleasing shape is required or
Vertical clearance needs to be maximized
Introduction to ANN, McCulloch Pitts Neuron, Perceptron and its Learning
Algorithm, Sigmoid Neuron, Activation Functions: Tanh, ReLu Multi- layer Perceptron
Model – Introduction, learning parameters: Weight and Bias, Loss function: Mean
Square Error, Back Propagation Learning Convolutional Neural Network, Building
blocks of CNN, Transfer Learning, R-CNN,Auto encoders, LSTM Networks, Recent
Trends in Deep Learning.
The TRB AJE35 RIIM Coordination and Collaboration Subcommittee has organized a series of webinars focused on building coordination, collaboration, and cooperation across multiple groups. All webinars have been recorded and copies of the recording, transcripts, and slides are below. These resources are open-access following creative commons licensing agreements. The files may be found, organized by webinar date, below. The committee co-chairs would welcome any suggestions for future webinars. The support of the AASHTO RAC Coordination and Collaboration Task Force, the Council of University Transportation Centers, and AUTRI’s Alabama Transportation Assistance Program is gratefully acknowledged.
This webinar overviews proven methods for collaborating with USDOT University Transportation Centers (UTCs), emphasizing state departments of transportation and other stakeholders. It will cover partnerships at all UTC stages, from the Notice of Funding Opportunity (NOFO) release through proposal development, research and implementation. Successful USDOT UTC research, education, workforce development, and technology transfer best practices will be highlighted. Dr. Larry Rilett, Director of the Auburn University Transportation Research Institute will moderate.
For more information, visit: https://aub.ie/trbwebinars
Computer Graphics involves technology to access. The Process transforms and presents information in a visual form. The role of computer graphics insensible.
2. Handful graphics function
OpenGL :
by silicon graphics
PHIGS :
Programmer’s Hierarchical Graphics System
GKS :
Graphics Kernel System
JAVA-3D/JOGL
By Sun micro-system
DirectX: Microsoft corp.
3. Target Coordinate Systems
CG system is unable define exactly unit like cm, inch etc
CG is a device independent system
Current coordinate is user coordinate = world coordinate
It should be match with Display coordinate system (Raster
coordinate)
4. Graphics function properties
7 groups of function
Primitive: What is object ?
low level objects or atomic entities, ex. point, polygon etc,
Attribute
How the appear: fill, bold character
Viewing
How we saw the image
Transformation
Transform of object: rotate, move
Input
Deal with the devices: keyboard, mouse etc.
Control function
Multiwindow, multiprocessing environment handling.
Inquiry function
Information providing for different API
5. Pipeline and State Machine
Entire graphics system thinking as a state machine
There are 2 types of Graphics functions
Things that define primitives
Things that changes the state
6. The OpenGL Interface
Begin with “gl”
Stored in library and referred to as GL
There are
Graphics Utility Library (GLU)
GLU Toolkit (GLUT)
GLX or WGL : glue for GL to OS
Defined in standard header folder “GL” filename “glut.h”
7. Primitives and Attributes
API should contain small set of primitives that
every hardware can be supported
Ex. Line, polygons, text
Variety of primitive such as circle, curves,
surface and solids able to build sophisticated
object but few hardware supported
OpenGL takes an intermediate
Support 2 classes of primitives
Geometric primitives : pass through a geometric
pipeline
Raster primitives: pass through pixel pipeline
8. Geometric
Able to manipulated
Raster
Lack of geometric properties
9. The 2D Modeling
Special case of 3D
Suppose z=0, every point refer to (x, y,0)
Generally object created from set points
In graphics system , the word “vertex” more preferred that “point”
OpenGL function form
glVertex*();
where
*: nt or ntv , 2 or 3 characters form
n : number of dimension ( 2, 3 or 4)
t : data type (ingeter, float, double, v for pointer)
Ex. glVertex2i(); /* vertex for 2D integer type*/
The data type may change to GL type instead of C
Ex. GLfloat = float in C
Note:
All of them have already defined in header fine <GLglut.h>
10. OpenGL Object form
Defined object in
glBegin-glEnd loop
2 kinds of primitives that
is used to defined object
No interior, eg. points, line
Have surface, eg. polygon
glBegin(type);
glVertex*(…);
.
.
.
glEnd();
Difference type of object form
C command for defining object
11. Polygon Basics
Close object that has interior
Able to use as curve surface
Number of generated polygons per time is used as
graphics performance
Display either only edges or fill
Correct properties should be simple, convex, and flat
3D polygon is unnecessarily flat
Filled objects
polygons displaying simple polygon nonsimple polygon convex property
12. Convex object properties
3D convex object: 3 vertices are not collinear
Safe for rendering if use triangle
Hardware and software often support
13. Polygon display mode
GL_POLYGONS
Edges are perform line loop and close
Edges has no with
define either fill or edges using glPolygonMode
If both, draw twice
14. Special types polygon
Triangles and Quadrilaterals
(GL_TRIANGLES, GL_QUADS)
Strips and Fans
(GL_TRIANGLE_STRIP, GL_QUAD_STRIP, GL_TRIANGLE_FAN)
15. Sample object:
Generating a Sphere
assign to be polygons and used GL_QUAD_STRIP
Use longitude and latitude schemes for the middle body
For pole uses
GL_TRIANGLE_FAN
C=M_PI/180.0; //degrees to radians, M_PI = 3.14159…
for (phi = -80.0; phi <= 80.0; phi += 20.0) {
glBegin(GL_QUAD_STRIP);
for (theta = -180.0; theta <= 180.0; theta += 20.0)
{
x=sin(c*theta)*cos(c*phi);
y=cos(c*theta)*cos(c*phi);
z=sin(c*phi);
glVertex3d(x,y,z);
x=sin(c*theta)*cos(c*(phi+20.0));
y=cos(c*theta)*cos(c*(phi+20.0));
z=sin(c*(phi+20.0));
glVertex3d(x,y,z);
}
glEnd();
}
16. x=y=0; // North pole modeling
z = 1;
glBegin(GL_TRIANGLE_FAN);
glVertex3d(x,y,z);
c=M_Pi/180.0;
z=sin(c*80.0);
for(theta=-180.0; theta<=180.0;theta+=20.0){
x=sin(c*theta)*cos(c*80.0);
y=cos(c*theta)*cos(c*80.0);
}
glVertex3d(x,y,z);
glEnd();
x=y=0,z=-1; // South pole modeling
glBegin(GL_TRIANGLE_FAN);
glVertex3d(x,y,z);
z = -sin(c*80.0);
for(theta = -180.0; theta <= 180.0; theta=20.0){
x=sin(c*theta)*cos(c*80.0);
y=cos(c*theta)*cos(c*80.0);
glVertex3d(x,y,z);
}
glEnd();
17. Text
2 types of text
Stroke Text
Constructed via using
graphic primitives
Able to transform like other
primitives
Raster Text
Character are defined as
rectangle of bits block
18. Stroke text
Consume a lot of memories
Postscript as an example
Raster text
Rapidly be placed in buffer by using bit-block-transfer
(bitblt) operation
Operate only character sizing
Often store in ROM (hardware)
Portability is limited by particular font
GLUT provide 8x8 pixels function
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, C)
C: ASCII character number
Character is placed in the present position of screen
19. Curved Objects
Create by using 2 approach
Use the primitive except points
n side polygon instead of circle
Approximate sphere with polyhedron
Curved surface by a mesh of convex polygon
Use mathematical definition
Quadric surfaces and parametric polynomial curved and surfaces
example:
Define sphere by center and a point on surface
Cubic Polynomial is defined by 4 points
OpenGL able to do both
20. Attributes
About how primitive display
Line : display color, type of line (dash, solid)
Concern with immediate mode: display as soon
as they are defined
21. Color
Most interesting of perception and computer graphics
Base on three color theory
If using additive color model
- c = T1R+T2G+T3B
C: color that we trying to match
T1, T2, T3: strength of intensity, the tristimulus value
22. Human Visual System
Our visual system do a continuous perception
Depends on 3 types of cone cell
Visually indistinguishable if they have the
same tristimulus value
CRT is an example of additive color system
Ai: brain perception value
Si: cone cell sensitivity
Viewing a point as a
color solid cube
( ) ( )
i i
A S C d
23. Subtractive color model
The complementary of additive color model
Start with white surface
If white light hit the surface, color will be absorb except the
object color which are reflect
Ex. painting and printing
Complementary color: cyan, magenta, yellow
additive color model subtractive color model
24. RGB-color model
Use separate buffer for each color
Each pixel has 3 bytes (24 bits) for each color
16 Million shade of color
OpenGL function
glColor3f(r, g, b);
ex. Red
glColor3f(1.0, 0.0, 0.0);
25. RGBA, the 4 color model
A: Alpha channel
Store in frame buffer like RGB
For creating effect ex. fog, combining images.
OpenGL treat as opacity or transparency
Ex. OpenGL command for 4 color model
glClearColor(1.0, 1.0, 1.0, 1.0);
White color and opaque
26. Indexed Color
Difficult to support in hardware
Higher memory requirements but now
memory is cheaper
Use color tray of artist as principle
Infinite color can be produced from different
quantity of primary colors
27. OpenGL indexed color function
glIndex(element);
Select color out of table
glutSetcolor(int color, GLfloat red, GLfloat blue, GLfloat green);
Set color entry to map the color table
28. Color Attributes
For RGB mode
glClearColor(1.0, 1.0, 1.0); /* clear to white */
glColor3f(1.0, 0.0, 0.0); /* setting point to red */
glPointSize(2.0); /* 2 pixel wide */
Note:
If 2 display differ in pixel size, rendered images
may appear slightly different
29. Viewing
Method for objects appear on screen
Use synthetic camera concept
Fix lens and fix location
Picture would be distort like real world
If we need to take an elephant picture, camera
should far enough to take all information
30. 2D Viewing
Base on the 2D rectangular area
Know as viewing rectangle or clipping rectangle
Be a special case of 3D viewing ex. plane at z=0
Default in 2x2x2 volume, origin at the center and bottom-
left corner is at (-1.0, -1.0)
31. Orthographic View
2D view the orthographic projection of 3D
Function
void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble
near, GLdouble far);
// near, far: distance which are measured from camera
/* orthographic projection from 3D */
void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
/* 2D equivalent to glOrtho but near and far set to -1.0, 1.0 */
Unlike camera, it is able to view behind object
32. Matrix Modes
Between graphic pipeline states, any transformation
2 important matrices:
model-view
Projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 500.0, 0.0, 500.0);
glMatrixMode(GL_MODELVIEW);
33. Control function
Concern about software environment between
software and platform
Different platform will have different interfacing
GLUT also provide the utility : see further
34. Windows interfacing
Window :
A rectangular area of our display, max = Screen
Window default origin (0,0)
at lower-left corner like Screen but mouse at top-
left
OpenGL function (GLUT function) for window
glutInit (int *argcp, char **argv);
glutCreateWindow(char *title); /* given the window title */
35. Display setup
glutInitDisplayMode(GLUT_RGB| GLUT_DEPTH | GLUT_DOUBLE);
GLUT_RGB: define RGB color mode
GLUT_DEPTH: a depth buffer for hidden-surface removal
GLUT_DOUBLE: number of buffer Double/Single
default:
RGB color, no hidden surface removal, single buffering
glutInitWindowSize(480, 640);
glutInitWindowPosition(0,0)
36. Aspect ratio
Ratio of rectangle’s width to its height
If glOrtho and glutInitWindowSize are not
specified the same size, object are distort.
37. View port
A rectangular area of the display window
Setting a view port
void glViewport(GLint x, GLint y, GLsizei w, GLsizei h);
38. Service function: main, display and myinit
glutMainLoop(); /* begin an event-processing loop, let the
window waiting for kill process */
void glutDisplayFunc(void *(func)(void));
/* call to the redisplay function name func */
#include <GL/glut.h>
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
glutCreateWindow("Simple OpenGL example");
glutDisplayFunc(display);
myinit();
glutMainLoop();
}
Program template
39. Program structure consisting
myinit :
setup user options to state variables dealing with viewing
and attributes-parameters
40. Example program:
Sierspinski Gasket
Proceeding of Sierspinski
1. Pick a random initial point in triangle
2. Select vertex
3. Finding the halfway point between initial point and
random vertex
4. Mark and display new point
5. Replace the initial point with this new point
6. Return to step 2
42. Array with OpenGL
// For 3D vertex, 2D is a special case
GLfloat vertex[3]; /* define array */
// Then we can use
glVertex3fv(vertex);/* pass by reference */
// Defining geometric object in Begin and End fn. statement
glBegin(GL_LINES);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
43. The same data able to define another object
// define a pair of points
glBegin(GL_POINTS);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
geEnd();
44. Using a 2 elements array to carry a point
// By defining new data type with 2 element array
typedef GLfloat point2[2];
// point2[0] carry x data
// point2[1] carry y data
when use
point2 vertices[3] ; // that means
vertices[0][0], vertices[1][0], vertices[2][0] // carry x value
vertices[0][1], vertices[1][1], vertices[2][1] // carry y value
point2 vertices[3] = {{0.0, 0.0}, {250.0, 500.0}, {500,0}}
45. Graphics Example Sierspinski
Thing need to do
Coloring
Locate the image
Define size
Window creating
Image clipping
Image duration
5000 random point 2D Sierspinski
46. Triangular gasket
There is no point in the middle triangle
The same observation can be applied to the other 3 triangles and so
on
Another method to fill the area is use triangle polygon instead of
point
Strategy
Start with a triangle which subdivide the area to 4 triangles
Remove the middle one
Repeat to other triangles until the size of the removing triangle is small
enough. Let say 1 pixel
This is the recursive program
See program
47. typedef float point2[2]; /* initial triangle */
point2 v[]={{-1.0, -0.58}, {1.0, -0.58}, {0.0, 1.15}};
void triangle( point2 a, point2 b, point2 c) { /* display one triangle */
glBegin(GL_TRIANGLES);
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv(c);
glEnd();
}
void divide_triangle(point2 a, point2 b, point2 c, int m) {
/* triangle subdivision using vertex numbers */
point2 v0, v1, v2;
int j;
if (m>0) {
for(j=0; j<2; j++) v0[j]=(a[j]+b[j])/2;
for(j=0; j<2; j++) v1[j]=(a[j]+c[j])/2;
for(j=0; j<2; j++) v2[j]=(b[j]+c[j])/2;
divide_triangle(a, v0, v1, m-1);
divide_triangle(c, v1, v2, m-1);
divide_triangle(b, v2, v0, m-1);
}
else /* draw triangle at end of recursion */
triangle(a,b,c);
}
49. 3D Sierspinski gasket
Begin with tetrahedron instead
triangle
Use 3D point
point v[]={ { 0.0, 0.0, 1.0},
{ 0.0, 0.942809, -0.33333},
{-0.816497, -0.471405, -0.333333},
{ 0.816497, -0.471405, -0.333333}
};
50. The hidden surface removal
Problem may happen if there is no relation between
surface
Close opaque object should mask the far object
The part of far object which overlap with close object
should remove
Z-buffer algorithm is a method to manipulate.
51. Exercises
1. Write a part of C program to define a unit circle object at position (1,1) using
OpenGL command
1. Explain the algorithm that you use to draw
Hint: you may use primitive such as TRIANGLE_FANS, or others
2. Write 2 unit circles, one at (1,1) and the other at (-1,-1). The (1,1) circle use full
surface shaded with red color and the other display in wire frame.
3. Space-filling curves have interested mathematicians for centuries. In the limit, these
curves have infinite length, but they are confined to a finite rectangle and never cross
themselves. Many of these curves can be generated iteratively. Consider the “rule”
pictured in shown below that replaces a single line segment with four shorter
segments. Write a program that starts with a triangle and iteratively applies the
replacement rule to all the line segments. The object that you generate is called the
Koch snowflake.