COMPUTER GRAPHICS & Graphical Programming. Idea is that we can write programs that interact with the graphical display device simply by writing to a predetermined area of the computer’s memory
4. ComputerMemoryModel
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Main Memory
Graphics memory
Used to be limited to separate amount on eg graphics
card
Modern idea is to partition main memory dynamically
(ie by software instruction)
Modern idea is to map memory to the display
Independent of display hardware type
5. ComputerMemoryModel cont…..
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
CPU + Cache memory + Main memory
Cache memory is fast but expensive so (still
often) only have small amount eg 512kBytes
available
Main memory relatively plentiful (eg GBytes)
but slow
6. Memory&Graphics
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Idea is that we can write programs that interact with
the graphical display device simply by writing to a
predetermined area of the computer’s memory
Known as Bitmap graphics
The bits are mapped to the pixels
Flexible, portable software
Independent of Hardware & Operating System
7. GraphicalDevices
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Devices eg mouse, stereo glasses, tracker ball, light pen, touch
screen, 3d-wand, “rat”, sensor gloves, head tracker, iris tracker,…
Even Mouse varies in form factor and number of buttons
Main Memory
Graphics memory
Used to be limited to separate amount on eg graphics
card
Modern idea is to partition main memory dynamically (ie
by software instruction)
Modern idea is to map memory to the display
Independent of display hardware type
8. GraphicalDevices
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Mouse - most well known device
Buttons, and scan movements
Jargon ideas that have become common:
Drag
Click
Double-Click
Left -Click
Main idea is to let you specify a location in a space eg x,y (or
x,y,z) coordinates
9. RasterModel-Pixels
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Pixel or sometimes “pel” Picture Element
Each pixel is a sample that can be rendered as a dot or
rectangle on the screen
Often try to design them as squares but not always
Might be implemented as small area of
phosphor on a monochrome monitor
Or three areas of eg red, green and blue
phosphors for colour
Or simple a transistor logic gate assembly on
a flat panel display
10. CoordinateSystems
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Pixel Coordinate System - rows and columns
Rectilinear
Usually for graphics, we start at top left corner and work our
way across and down
Same as raster orientation
Array[row][column]
Row major used in C and C+ ( last index moves
fastest in memory)
Not all languages do it this way - eg Fortran
uses column major (first index moves fastest)
11. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
CartesianCoordinates
Often we use the Cartesian
coordinate convention ie x,y
coordinates (or x,y,z in 3D) and
map this to our display
Usually column corresponds to x,
and -row corresponds to y
This works if we know the
max min values.
Common values are eg
640 columns x 320 rows
Or 1024x768 or better
Aspect ratio is the ratio of
these eg 4:3 - Chosen to
suit the common display
devices egTV screens or
monitors
x
y
12. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
DrawingSpaceorCanvas
Coordinate Systems
Drawing Primitives
Library of utilities
eg drawDot( int x, int y);
Or drawLine( x1, y1, x2, y2 );
Usually we have “Primitive”
Models for coordinate spaces and
colours
We do not want to write
our application programs
worrying about pixel
resolutions
We may have libraries
that allow us to do so,
but often they will
support more general
coordinates
Eg real space
“normalised”
coordinates [0.0,1.0]
13. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
ColoursinBrief
Red Green Blue is not the Only
colour model although still most
common
We specify separate RGB
values for each pixel
They map to intensities
All colours can be expressed as
combination of these
Sometimes also an “alpha” or
transparency value
These will conveniently pack
into a computer word of 4
bytes, one byte for each
entity
1 Byte gives us 256 values -
hence numbers of colours
Need not use this
resolution
Can also use Look-up tables
to save memory
14. GraphicsLibrariesandpackages
Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
What is a graphics system?
A package or Library that links to a Language or
environment and lets us write programs that are
independent of the graphics
Java Development Kit and Java 2D and Java 3D
libraries
GL and OpenGL (Graphics Library),VOGL
X11, DirectX, PHIGS,… and lots of others
15. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
JavaGraphicsProgramOutline
A short example- MyProg01 draws a black
rectangle inside a white rectangle
See the course web pages for these codes
Use a text editor or your favourite text tool
(eg emacs or vi or notepad) to create
MyProg01.java
Compile it using javac MyProg01.java
Run using java Myprog01
16. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Java GraphicsCodeFragment
// g2 is the Graphics2D object supplied by the system…
g2.setBackground( Color.white ); // set background colour
g2.clearRect( 0, 0, getWidth(), getHeight() ); // clear an area
g2.setColor( Color.black ); // set the drawing colour
g2.fillRect( 10, 10, 20, 20 ); // fill in a rectangle of that colour
g2.drawRect( 0, 0, getWidth()-1, getHeight()-1 ); // draw a border around everything
More on how this works next lecture and at the
tutorials…
18. Bridgekloud: https://www.bridgekloud.com Unit: Computer Graphics ICS2311
Summary
Graphics has a varied history
Very technology driven
Good advances in recent years with
adequate memory and processing
power
Primitives and library layers approach
is very common
Note devices and
memory model
Colour models and
drawing spaces are
important ideas for our
programs
We will use the Java
Development Kit
graphics libraries and
primitives