SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Drawing and Coordinate Systems
Coordinate Systems






Screen Coordinate system
World Coordinate system
World window
Viewport
Window to viewport mapping
Screen Coordinate System
Glut

OpenGL
(0,0)
Screen Coordinate System
- 2D Regular Cartesian Grid
- Origin (0,0) at lower left
corner (OpenGL convention)
- Horizontal axis – x
Vertical axis – y
- Pixels are defined at the grid
intersections
- This coordinate system is defined
(0,0)
relative to the display window origin
(OpenGL: the lower left corner
of the window)

y

x

(2,2)
World Coordinate System


Screen coordinate system is not easy to
use

10 feet
20 feet
World Coordinate System


Another example:
plot a sinc function:
sinc(x) = sin(PI*x)/PI*x
x = -4 .. +4
World Coordinate System


It would be nice if we can use
application specific coordinates –
world coordinate system
glBegin(GL_LINE_STRIP);
for (x = -4.0; x <4.0; x+=0.1){
Glfloat y = sin(3.14 * x) / (3.14 * x);
glVertex2f (x,y);
}
glEnd();
Define a world window
World Window


World window – a rectangular region in
the world that limits our view
Define by

W_T

W_L, W_R, W_B, W_T

W_B

Use OpenGL command:
W_L

W_R

gluOrtho2D(left, right, bottom,
top)
Viewport




The rectangular region in the screen that
maps to our world window
Defined in the window’s (or control’s)
coordinate system
glViewport(int left, int bottom,
int (right-left),
int (top-bottom));

V_T

V_B
V_L

V_R
To draw in world coordinate system
Two tasks need to be done








Define a rectangular world window
(call an OpenGL function)
Define a viewport (call an OpenGL
function)
Perform window to viewport mapping
(OpenGL internals will do this for you)
A simple example
DrawQuad()
(300,200)
{
glViewport(0,0,300,200);
glMatrixMode(GL_PROJECTION);
glLoadIndentity();
glOrtho2D(-1,1,-1,1);
glBegin(GL_QUADS);
glColor3f(1,1,0);
glVertex2i(-0.5,-0.5);
(0,0)
glVertex2i(+0.5,-0.5);
viewport
glVertex2i(+0.5,+0.5);
glVertex2i(-0.5,+0.5);
How big is the quad?
glEnd();
}
Window to viewport mapping


The objects in the world window will
then be drawn onto the viewport
(x,y)

World window

viewport
(Sx, Sy)
Window to viewport mapping


How to calculate (sx, sy) from (x,y)?

(x,y)
(Sx, Sy)
Window to viewport mapping


First thing to remember – you don’t
need to do it by yourself. OpenGL will
do it for you




You just need to define the viewport (with
glViewport()), and the world window (with
gluOrtho2D())

But we will look ‘under the hood’
Also, one thing to remember …


A practical OpenGL issue


Before calling gluOrtho2D(), you need to
have the following two lines of code –

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(Left, Right, Bottom, Top);
Window to viewport mapping


Things that are given:






The world window (W_L, W_R, W_B, W_T)
The viewport (V_L, V_R, V_B, V_T)
A point (x,y) in the world coordinate system

Calculate the corresponding point (sx,
sy) in the screen coordinate system
Window to viewport mapping


Basic principle: the mapping should be
proportional
(sx,sy)

(x,y)

(x – W_L) / (W_R – W_L)

=

(sx – V_L) / (V_R – V_L)

(y - W_B) / (W_T – W_B)

=

(sy – V_B) / (V_T – V_B)
Window to viewport mapping
(sx,sy)

(x,y)

(x – W_L) / (W_R – W_L)

=

(sx – V_L) / (V_R – V_L)

(y - W_B) / (W_T – W_B)

=

(sy – V_B) / (V_T – V_B)

sx = (x - W_L) * (V_R-V_L)/(W_R-W_L) + V_L
sy = (y - W_B) * (V_T-V_B)/(W_T-W_B) + V_B
Some practical issues





How to set up an appropriate world
window automatically?
How to zoom into the picture?
How to set up an appropriate viewport,
so that the picture is not going to be
distorted?
World window setup


The basic idea is to see all the objects
in the world




This can just be your initial view, and the
user can change it later

How to achieve it?
World window set up


Find the world coordinates extent that will
cover the entire scene (the bounding box )
max Y

min Y
min X

max X
Zoom into the picture
Shrink your world window – call gluOrtho2D() with a new range

Viewport
Non-distorted viewport setup






Distortion happens when …
World window and display window have
different aspect ratios
Aspect ratio?
R=W/H
Fixing the aspect ratio


Method I – Fixed camera view







Limit the viewport to a portion of the
window. (covered next)
Constrain the user’s resizing ability.
Adjust the window (or control) size.

Method II – Adjusting the scale to
compensate for a non-square window.


We will cover this when we look at 3D.
Compare aspect ratios
H

W

World window

Display window

Aspect Ratio = R

Aspect Ratio = W / H

R> W/H
Match aspect ratios
H

R

?
W

World window

Display window

Aspect Ratio = R

Aspect Ratio = W / H

R> W/H
Match aspect ratios
H

R
World window
Aspect Ratio = R

R> W/H

W/R
W

Display window
Aspect Ratio = W / H

glViewport(0, 0, W, W/R)
Compare aspect ratios
H

W

World window

Display window

Aspect Ratio = R

Aspect Ratio = W / H

R< W/H
Match aspect ratios
?
H

W

World window

Display window

Aspect Ratio = R

Aspect Ratio = W / H

R< W/H
Match aspect ratios
H*R
H

World window
Aspect Ratio = R

R< W/H

W
Display window
Aspect Ratio = W / H

glViewport(0, 0, H*R, H)
When to call glViewport() ?





Initialization
When the user resizes the display
window.
New type of camera? 35mm, 70mm, …

Note: Resize event is actually called on
initialization, but your callback may not have
been connected at this time.
Resize event
Void resize(int W, int H)
{
glViewport(0,0,W, H);
}
You can provide your own to make sure the
aspect ratio is fixed.
Put it all together
DrawQuad()
(300,200)
{
glViewport(0,0,300,200);
glMatrixMode(GL_PROJECTION);
glLoadIndentity();
glOrtho2D(-1,1,-1,1);
glBegin(GL_QUADS);
glColor3f(1,1,0);
glVertex2i(-0.5,-0.5);
(0,0)
glVertex2i(+0.5,-0.5);
viewport
glVertex2i(+0.5,+0.5);
glVertex2i(-0.5,+0.5);
How big is the quad?
glEnd();
}
More Viewports


Viewports can also be thought of as clip
windows. This can be useful for:






User interaction
Static camera – small moving object
Limited field-of-view
Occlusion culling
Selection (picking)

Weitere ähnliche Inhalte

Was ist angesagt?

4. THREE DIMENSIONAL DISPLAY METHODS
4.	THREE DIMENSIONAL DISPLAY METHODS4.	THREE DIMENSIONAL DISPLAY METHODS
4. THREE DIMENSIONAL DISPLAY METHODSSanthiNivas
 
Raster scan system
Raster scan systemRaster scan system
Raster scan systemMohd Arif
 
Windows to viewport transformation
Windows to viewport transformationWindows to viewport transformation
Windows to viewport transformationPrashant Singh
 
2D transformation (Computer Graphics)
2D transformation (Computer Graphics)2D transformation (Computer Graphics)
2D transformation (Computer Graphics)Timbal Mayank
 
Line drawing algo.
Line drawing algo.Line drawing algo.
Line drawing algo.Mohd Arif
 
Computer graphics
Computer graphicsComputer graphics
Computer graphicsMohsin Azam
 
3D Graphics : Computer Graphics Fundamentals
3D Graphics : Computer Graphics Fundamentals3D Graphics : Computer Graphics Fundamentals
3D Graphics : Computer Graphics FundamentalsMuhammed Afsal Villan
 
Window to viewport transformation
Window to viewport transformationWindow to viewport transformation
Window to viewport transformationAnkit Garg
 
3 d viewing projection
3 d viewing  projection3 d viewing  projection
3 d viewing projectionPooja Dixit
 
Back face detection
Back face detectionBack face detection
Back face detectionPooja Dixit
 
Viewing transformation
Viewing transformationViewing transformation
Viewing transformationUdayan Gupta
 
Polygon filling
Polygon fillingPolygon filling
Polygon fillingAnkit Garg
 
computer animation languages-N.Kavitha.pptx
computer animation languages-N.Kavitha.pptxcomputer animation languages-N.Kavitha.pptx
computer animation languages-N.Kavitha.pptxComputerScienceDepar6
 
Intro to scan conversion
Intro to scan conversionIntro to scan conversion
Intro to scan conversionMohd Arif
 
2D Transformation
2D Transformation2D Transformation
2D TransformationShahDhruv21
 
illumination model in Computer Graphics by irru pychukar
illumination model in Computer Graphics by irru pychukarillumination model in Computer Graphics by irru pychukar
illumination model in Computer Graphics by irru pychukarsyedArr
 

Was ist angesagt? (20)

4. THREE DIMENSIONAL DISPLAY METHODS
4.	THREE DIMENSIONAL DISPLAY METHODS4.	THREE DIMENSIONAL DISPLAY METHODS
4. THREE DIMENSIONAL DISPLAY METHODS
 
Raster scan system
Raster scan systemRaster scan system
Raster scan system
 
Windows to viewport transformation
Windows to viewport transformationWindows to viewport transformation
Windows to viewport transformation
 
2D transformation (Computer Graphics)
2D transformation (Computer Graphics)2D transformation (Computer Graphics)
2D transformation (Computer Graphics)
 
Line drawing algo.
Line drawing algo.Line drawing algo.
Line drawing algo.
 
Computer graphics
Computer graphicsComputer graphics
Computer graphics
 
3D Graphics : Computer Graphics Fundamentals
3D Graphics : Computer Graphics Fundamentals3D Graphics : Computer Graphics Fundamentals
3D Graphics : Computer Graphics Fundamentals
 
Anti aliasing Computer Graphics
Anti aliasing Computer GraphicsAnti aliasing Computer Graphics
Anti aliasing Computer Graphics
 
Window to viewport transformation
Window to viewport transformationWindow to viewport transformation
Window to viewport transformation
 
3 d viewing projection
3 d viewing  projection3 d viewing  projection
3 d viewing projection
 
Back face detection
Back face detectionBack face detection
Back face detection
 
3 d display methods
3 d display methods3 d display methods
3 d display methods
 
Viewing transformation
Viewing transformationViewing transformation
Viewing transformation
 
Polygon filling
Polygon fillingPolygon filling
Polygon filling
 
Shading
ShadingShading
Shading
 
computer animation languages-N.Kavitha.pptx
computer animation languages-N.Kavitha.pptxcomputer animation languages-N.Kavitha.pptx
computer animation languages-N.Kavitha.pptx
 
Intro to scan conversion
Intro to scan conversionIntro to scan conversion
Intro to scan conversion
 
2D Transformation
2D Transformation2D Transformation
2D Transformation
 
illumination model in Computer Graphics by irru pychukar
illumination model in Computer Graphics by irru pychukarillumination model in Computer Graphics by irru pychukar
illumination model in Computer Graphics by irru pychukar
 
3D Transformation
3D Transformation3D Transformation
3D Transformation
 

Ähnlich wie computer graphics

3 projection computer graphics
3 projection computer graphics3 projection computer graphics
3 projection computer graphicscairo university
 
3 d graphics with opengl part 2
3 d graphics with opengl  part 23 d graphics with opengl  part 2
3 d graphics with opengl part 2Sardar Alam
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Java Graphics
Java GraphicsJava Graphics
Java GraphicsShraddha
 
computer graphics slides by Talha shah
computer graphics slides by Talha shahcomputer graphics slides by Talha shah
computer graphics slides by Talha shahSyed Talha
 
CS 354 Object Viewing and Representation
CS 354 Object Viewing and RepresentationCS 354 Object Viewing and Representation
CS 354 Object Viewing and RepresentationMark Kilgard
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingMark Kilgard
 
Lab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer GraphicsLab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer GraphicsRup Chowdhury
 
UNIT_3-Two-Dimensional-Geometric-Transformations.pdf
UNIT_3-Two-Dimensional-Geometric-Transformations.pdfUNIT_3-Two-Dimensional-Geometric-Transformations.pdf
UNIT_3-Two-Dimensional-Geometric-Transformations.pdfVivekKumar148171
 
Trytten computergraphics(1)
Trytten computergraphics(1)Trytten computergraphics(1)
Trytten computergraphics(1)nriaz469
 
openGL basics for sample program (1).ppt
openGL basics for sample program (1).pptopenGL basics for sample program (1).ppt
openGL basics for sample program (1).pptHIMANKMISHRA2
 
openGL basics for sample program.ppt
openGL basics for sample program.pptopenGL basics for sample program.ppt
openGL basics for sample program.pptHIMANKMISHRA2
 
Shadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics HardwareShadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics Hardwarestefan_b
 

Ähnlich wie computer graphics (20)

Windows and viewport
Windows and viewportWindows and viewport
Windows and viewport
 
Lesson 2 - Drawing Objects
Lesson 2 - Drawing ObjectsLesson 2 - Drawing Objects
Lesson 2 - Drawing Objects
 
3 projection computer graphics
3 projection computer graphics3 projection computer graphics
3 projection computer graphics
 
3 d graphics with opengl part 2
3 d graphics with opengl  part 23 d graphics with opengl  part 2
3 d graphics with opengl part 2
 
Lec4
Lec4Lec4
Lec4
 
Bai 1
Bai 1Bai 1
Bai 1
 
Games 3 dl4-example
Games 3 dl4-exampleGames 3 dl4-example
Games 3 dl4-example
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Java Graphics
Java GraphicsJava Graphics
Java Graphics
 
computer graphics slides by Talha shah
computer graphics slides by Talha shahcomputer graphics slides by Talha shah
computer graphics slides by Talha shah
 
Drawing Tools
Drawing ToolsDrawing Tools
Drawing Tools
 
CS 354 Object Viewing and Representation
CS 354 Object Viewing and RepresentationCS 354 Object Viewing and Representation
CS 354 Object Viewing and Representation
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
Csc406 lecture7 device independence and normalization in Computer graphics(Co...
Csc406 lecture7 device independence and normalization in Computer graphics(Co...Csc406 lecture7 device independence and normalization in Computer graphics(Co...
Csc406 lecture7 device independence and normalization in Computer graphics(Co...
 
Lab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer GraphicsLab Practices and Works Documentation / Report on Computer Graphics
Lab Practices and Works Documentation / Report on Computer Graphics
 
UNIT_3-Two-Dimensional-Geometric-Transformations.pdf
UNIT_3-Two-Dimensional-Geometric-Transformations.pdfUNIT_3-Two-Dimensional-Geometric-Transformations.pdf
UNIT_3-Two-Dimensional-Geometric-Transformations.pdf
 
Trytten computergraphics(1)
Trytten computergraphics(1)Trytten computergraphics(1)
Trytten computergraphics(1)
 
openGL basics for sample program (1).ppt
openGL basics for sample program (1).pptopenGL basics for sample program (1).ppt
openGL basics for sample program (1).ppt
 
openGL basics for sample program.ppt
openGL basics for sample program.pptopenGL basics for sample program.ppt
openGL basics for sample program.ppt
 
Shadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics HardwareShadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics Hardware
 

Kürzlich hochgeladen

Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxAmanpreet Kaur
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701bronxfugly43
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Association for Project Management
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 

Kürzlich hochgeladen (20)

Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 

computer graphics

  • 2. Coordinate Systems      Screen Coordinate system World Coordinate system World window Viewport Window to viewport mapping
  • 4. Screen Coordinate System - 2D Regular Cartesian Grid - Origin (0,0) at lower left corner (OpenGL convention) - Horizontal axis – x Vertical axis – y - Pixels are defined at the grid intersections - This coordinate system is defined (0,0) relative to the display window origin (OpenGL: the lower left corner of the window) y x (2,2)
  • 5. World Coordinate System  Screen coordinate system is not easy to use 10 feet 20 feet
  • 6. World Coordinate System  Another example: plot a sinc function: sinc(x) = sin(PI*x)/PI*x x = -4 .. +4
  • 7. World Coordinate System  It would be nice if we can use application specific coordinates – world coordinate system glBegin(GL_LINE_STRIP); for (x = -4.0; x <4.0; x+=0.1){ Glfloat y = sin(3.14 * x) / (3.14 * x); glVertex2f (x,y); } glEnd();
  • 8. Define a world window
  • 9. World Window  World window – a rectangular region in the world that limits our view Define by W_T W_L, W_R, W_B, W_T W_B Use OpenGL command: W_L W_R gluOrtho2D(left, right, bottom, top)
  • 10. Viewport   The rectangular region in the screen that maps to our world window Defined in the window’s (or control’s) coordinate system glViewport(int left, int bottom, int (right-left), int (top-bottom)); V_T V_B V_L V_R
  • 11. To draw in world coordinate system Two tasks need to be done     Define a rectangular world window (call an OpenGL function) Define a viewport (call an OpenGL function) Perform window to viewport mapping (OpenGL internals will do this for you)
  • 13. Window to viewport mapping  The objects in the world window will then be drawn onto the viewport (x,y) World window viewport (Sx, Sy)
  • 14. Window to viewport mapping  How to calculate (sx, sy) from (x,y)? (x,y) (Sx, Sy)
  • 15. Window to viewport mapping  First thing to remember – you don’t need to do it by yourself. OpenGL will do it for you   You just need to define the viewport (with glViewport()), and the world window (with gluOrtho2D()) But we will look ‘under the hood’
  • 16. Also, one thing to remember …  A practical OpenGL issue  Before calling gluOrtho2D(), you need to have the following two lines of code – glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(Left, Right, Bottom, Top);
  • 17. Window to viewport mapping  Things that are given:     The world window (W_L, W_R, W_B, W_T) The viewport (V_L, V_R, V_B, V_T) A point (x,y) in the world coordinate system Calculate the corresponding point (sx, sy) in the screen coordinate system
  • 18. Window to viewport mapping  Basic principle: the mapping should be proportional (sx,sy) (x,y) (x – W_L) / (W_R – W_L) = (sx – V_L) / (V_R – V_L) (y - W_B) / (W_T – W_B) = (sy – V_B) / (V_T – V_B)
  • 19. Window to viewport mapping (sx,sy) (x,y) (x – W_L) / (W_R – W_L) = (sx – V_L) / (V_R – V_L) (y - W_B) / (W_T – W_B) = (sy – V_B) / (V_T – V_B) sx = (x - W_L) * (V_R-V_L)/(W_R-W_L) + V_L sy = (y - W_B) * (V_T-V_B)/(W_T-W_B) + V_B
  • 20. Some practical issues    How to set up an appropriate world window automatically? How to zoom into the picture? How to set up an appropriate viewport, so that the picture is not going to be distorted?
  • 21. World window setup  The basic idea is to see all the objects in the world   This can just be your initial view, and the user can change it later How to achieve it?
  • 22. World window set up  Find the world coordinates extent that will cover the entire scene (the bounding box ) max Y min Y min X max X
  • 23. Zoom into the picture Shrink your world window – call gluOrtho2D() with a new range Viewport
  • 24. Non-distorted viewport setup     Distortion happens when … World window and display window have different aspect ratios Aspect ratio? R=W/H
  • 25. Fixing the aspect ratio  Method I – Fixed camera view     Limit the viewport to a portion of the window. (covered next) Constrain the user’s resizing ability. Adjust the window (or control) size. Method II – Adjusting the scale to compensate for a non-square window.  We will cover this when we look at 3D.
  • 26. Compare aspect ratios H W World window Display window Aspect Ratio = R Aspect Ratio = W / H R> W/H
  • 27. Match aspect ratios H R ? W World window Display window Aspect Ratio = R Aspect Ratio = W / H R> W/H
  • 28. Match aspect ratios H R World window Aspect Ratio = R R> W/H W/R W Display window Aspect Ratio = W / H glViewport(0, 0, W, W/R)
  • 29. Compare aspect ratios H W World window Display window Aspect Ratio = R Aspect Ratio = W / H R< W/H
  • 30. Match aspect ratios ? H W World window Display window Aspect Ratio = R Aspect Ratio = W / H R< W/H
  • 31. Match aspect ratios H*R H World window Aspect Ratio = R R< W/H W Display window Aspect Ratio = W / H glViewport(0, 0, H*R, H)
  • 32. When to call glViewport() ?    Initialization When the user resizes the display window. New type of camera? 35mm, 70mm, … Note: Resize event is actually called on initialization, but your callback may not have been connected at this time.
  • 33. Resize event Void resize(int W, int H) { glViewport(0,0,W, H); } You can provide your own to make sure the aspect ratio is fixed.
  • 34. Put it all together DrawQuad() (300,200) { glViewport(0,0,300,200); glMatrixMode(GL_PROJECTION); glLoadIndentity(); glOrtho2D(-1,1,-1,1); glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2i(-0.5,-0.5); (0,0) glVertex2i(+0.5,-0.5); viewport glVertex2i(+0.5,+0.5); glVertex2i(-0.5,+0.5); How big is the quad? glEnd(); }
  • 35. More Viewports  Viewports can also be thought of as clip windows. This can be useful for:      User interaction Static camera – small moving object Limited field-of-view Occlusion culling Selection (picking)