graphics vector graphics 2d only. overview of common functions and parameters.. drawing in matlab....

47
Graphics • Vector graphics 2D only. • Overview of common functions and parameters.. • Drawing in Matlab. • We will see how a common file format stores the information. • Looking at similar functions in PDF.

Upload: megan-grisson

Post on 01-Apr-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Graphics

• Vector graphics 2D only.

• Overview of common functions and parameters..

• Drawing in Matlab.

• We will see how a common file format stores the information.

• Looking at similar functions in PDF.

Page 2: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Graphics

• Source of confusion.

• Vectors vs Bitmaps.

• Here we are concerned with vector graphics.

Page 3: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Vector Graphics

• Is to pictures what MIDI is to sound.

• Uses lines, predefined shapes, curves and (predefined text).

• Can be very compact.

• Good for plotters.

• Converted to bitmap for monitor display.

Page 4: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Co-ordinate systems

• Vector graphics based upon an x, y co-ordinate system.

• The x co-ordinate runs from left to right across the screen.

• The y co-ordinate usually runs from the bottom (= 0) of the image to the top, but sometimes from top (= 0) to the bottom.

Page 5: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Co-ordinate systems

• To set up co-ordinate system in Matlab.

• haxes=axes– Sets up a co-ordinate system starting

at 0 on the x- and y-axes and extending to 1.0 on the x-axis and 1.0 on the y-axis.

• You may now draw on this system.• You can change the axis scaling

using the “axis” command.• But by default the scaling will

increase to accommodate your objects.

Page 6: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Lines in Matlab

• Function line used to draw lines• h = line(x, y) where x and y are x

and y co-ordinates of the start and end of a line. H is a “handle” to the graphics object (used for setting properties.

• Example– x=[20 50]– y=[30 80]– hline = line(x,y)

Draws a line from point x=20, y=30 to the point x=50, y=80

Page 7: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Rectangles in Matlab• Function “rectangle” used to draw

rectangles in Matlab.• Often (in other packages and ‘C’

routines) rectangles are defined by 2 points only – Bottom left and top right.

• In Matlab– hrect = rectangle('Position', [100 100

50 25]) – (start position (x,y) then width and

height.)

• Also used to draw ellipses and circles– hcirc = rectangle('Position', [100 100

50 25], 'Curvature', [1 1]). – A circle is an ellipse with the same

(height as its width)

Page 8: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Polygons in Matlab

• h = patch(x, y, ‘c’) draws a polygon, the vertices of which are contained in x and y, and is filled by colour ‘c’.

• Example draw a red filled pentagon.– Need 5 points in x and y.– x=[50 25 100 175 150]– y=[50 100 150 100 50]– hpoly = patch(x, y, ‘r’)

Page 9: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Exercises

• Draw a line from point x=20, y=30 to the point x=50, y=60.

• Draw a rectangle with the bottom left hand corner at point x=30, y=50 and the top right hand corner at point x=70, y=80.

• Draw a circle of radius 3 and centred at point x=50, y=60.

• Draw a blue filled triangle.

Page 10: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles

• The main figure has a “handle” in the Matlab environment.

• Handles allow Matlab to keep track of figures and graphic objects.

• Within the main figure we have an axis object; this also also has a handle.

• It is a “child” object of the figure.

Page 11: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles

• We differentiate between or identify objects by their handles

• Sort of pointer.• When we add drawing objects

such as our lines, rectangles, patches, they become child objects of the axis object and are also identified by handles.

• So we now have an axes with four children.

• We can return there values using• Hchild=get(haxes, ‘Children’)

Page 12: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles

• So our structure so far could be drawn as.

Hfigure is the handle to the figure and has child object with handle

haxes

haxes has4 children with handleshline, hrect,hcirc, and

hpoly

Page 13: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles

• Or in hierarchical form

Figure

‘children’

‘children’Axes

line rect patchrect

Represents handles

hfigure

Page 14: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles

• The handle of the figure is returned in variable “hfigure”.

• It gives us access to all the properties of the figure. get(h) returns a copy of the figure’s (object’s) properties including its children.

Page 15: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Handles, Try it

• Type “maindetails=get(hfigure)”

• maindetails lists all the properties in the figure.

• The structure includes handles to the child objects.

• We can use the handles to gain access to the child objects and alter their properties.

Page 16: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Properties, get() and set()

• We can retrieve a copy of the values associated with a graphic object through its handle by using S=get(hrect)

• The structure contains all the properties of the graphic object.

• However, since it is a copy we cannot change the actual information associated with the graphic object.

Page 17: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Properties, get() and set()

• So in true “OO’” style we must use an access method/function to adjust parameters..

• Set(h,'PropertyName',PropertyValue)

• Get(h) or Get(h, ‘PropertyName’) returns the property.

• Note ‘quotes’

Page 18: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Order of objects

• As an drawing object is added to the axes object an entry (drawing object’s handle) is placed in the “children” array of the axis object.

• We can rearrange this array to change which object is on top.

• Again we are simply swapping handles

• We need to call “refresh” to see it.

Page 19: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Order of objects

• So we get the axes objects “children” array.

• hchild=get(haxes, ‘children’)• Make a copy

– htemp=hchild

• Rearrange the handles to the objects– htemp(4)=hchild(1)– htemp(1)=hchild(4)

And set the axes “children: array to our new values

set(haxes,’children’, htemp)

Page 20: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Deleting objects.

• We can delete an object using its handle.

• delete(hpoly)

• Better put it back!

• hpoly = patch(x, y, ‘r’)

Page 21: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Stroke, Fill and Colour

• All vector graphic shapes have stroke and fill “properties”.

• They affect how the graphic is drawn.

• Stroke is how lines (and outlines are drawn) fill is how shapes are filled in.

• One property is “colour” (‘color’ in Matlab.

• Some other properties for stroke are:– Width ‘LineWidth’– style (dotted dashed etc.) ‘LineStyle’

Page 22: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Stroke, Fill and Colour

• To alter the fill and edge colour of a shape in Matlab:– set(hrect, 'FaceColor', [1 0 0])

for fill colour– set(hrect, 'EdgeColor', [1 0

0.5]) for stroke colour.– Where hr is a handle to the

shape.

• Line width and style may also be applied to the shape’s outline.

Page 23: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Transparency and “alpha” channels.

• Another property of vector graphics is the ability to add transparency.

• Many packages allow the adjustment of transparency from 0% to 100%.

• An “alpha channel” (in addition to the colour channels id s provided with the objects for this purpose.

Page 24: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Transparency and “alpha” channels.

• We can access the alpha channel of our shapes by the alpha property of the “patch” drawing object in Matlab.

• Face and edge (fill and stroke) have separate alpha channels.

• It has values between 0 and 1.

• Defaults to 1• set(hpoly, ‘FaceAlpha’, 0.5)

Page 25: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Text

• Text may be added to vector graphics.

• htext=text(50,100, ‘Dogs and cats’)

• Properties “font” and “colour” (at least) may be changed.

Page 26: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Exercises

• Draw the rectangle as above but change the outline to red and fill the rectangle with cyan.

Page 27: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Curves

• Described mathematically.• Polynomial equations.• Degree of equations is the

highest power of x.• Linear y = ax + b

– degree 1

• Quadratic. y = ax2 + bx + c. – degree 2

• Cubic. y = ax3 + bx2 + cx + d– degree 3

Page 28: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Exercises

• Linear degree 1 e.g. y = 2x + 5.

x = [-10 :10]; plot(x, 2*x + 5)

• Quadratic degree 2 e.g. y = x2 + 0x + 5.

x = [-10 : 10]; plot(x, (x.^2) + 5)

• Cubic degree 3 e.g. y = 2x3 + 20x2 + 3x +2 .

x = [-10 : 10]; plot(x, 2*(x.^3) + 20*(x.^2) + 3*x + 2)

Page 29: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Bezier curves

• P(t) = P0 (1-t)3 + P13t(1-t)2 + P23t2(1-t) + P3t3

• As t takes values between 0 and 1. P’s are x, y points

• Really two equations.

• x(t) = x0 (1-t)3 + x13t(1-t)2 + x23t2(1-t) + x3t3.

• y(t) = y0 (1-t)3 + y13t(1-t)2 + y23t2(1-t) + y3t3

Page 30: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Bezier curves

• Consider t=0 then (1-t) = 1– P(0) = (x0, y0) = P0 so curve

goes through first point.

• Consider t=1 then (1-t) = 0– P(1) = (x3, y3) = P3 so curve

goes through last point.

• In between curve is pulled towards P1 and P2.,

Page 31: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Exercises

• Try Matlab function mybezier.m

• Examine the function.

• Set up four points P0, P1, P2, P3. – e.g. P0 = [2, 3]

• Run the function.

• Experiment with different points.

Page 32: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Other mathematical curves

• B-splines

• NURBS

Page 33: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Storage of Vector Graphics.

• Many formats– Autocad DXF.– Photoshop PSD.– Paintshop Pro PSP.

• We will consider PDF’s implementation because it may be viewed easily.

Page 34: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

PDF format

• Portable Document Format

• Developed by Adobe.

• Developed from PostScript (and EPS (Encapsulated PostScript)).

• PostScript describes pages as vector graphics.

Page 35: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Graphics in PDF

• Similar operations to Matlab (and other).

• PDF allows many complex graphics operations.

• Lines• Rectangles• Curves• No direct method for circles.• We will look at a small selection

to see that the PDF file can store vector graphics.

Page 36: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

PDF graphic instructions.

• All PDF graphic instructions use postfix notation where parameters are followed by the graphics operation instruction.

• Fill and stroke parameters are set before the object is drawn.

• To see a created object we must “fill” and “stroke” it.

Page 37: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

PDF graphic instructions.

• After adding to the PDF file we should really adjust the “Length” parameter of the stream and the “startxref” pointer at the end of the file. (see example file test.pdf)

• When counting additions a new line (in Windows/Dos) counts as 2 characters.

• However, Acrobat seems quite tolerant of errors in these fields.

• (Ghostscript is not)

Page 38: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Lines in PDF

• We must firstly move to the start of the path. (see test.pdf)– 150 250 m

• Then we draw a line from this point to the end of line.– 400 250 l

• To see the line we must draw the stroke– S

• Try your own using note pad saving the file by some different name.

Page 39: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Rectangles in PDF

• We set up the start point (x, y), then specify the width and height of the rectangle.

• Then use the re operator to create the rectangle.– 200 300 50 75 re

• We must then draw the stroke and fill the rectangle. “B” does this in one operation. – B

Page 40: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Rectangles in PDF

• We set up the start point (x, y), then specify the width and height of the rectangle.

• Then use the re operator to create the rectangle.– 200 300 50 75 re

• Creates a rectangle starting at point x=200 y=300 width=50, height = 75.

• We must then draw the stroke and fill the rectangle. “B” does this in one operation. – B

Page 41: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Bezier curve in PDF

• Set starting point (x, y) for curve using m operator– 300 300 m

• Add the two “control points” (x, y pairs) and the end point and create the curve using the c operator:– 300 400 400 400 400 300 c

• Draw and fill the curve. – The example also closes (joins the

ends together) using the b operator (which also draws the stroke and fills the closed shape)

– b

Page 42: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Stroke and fill in PDF

• Note that fill and stroke colours are set up before the affected object is drawn. In PDF terms we set the “graphics state”.

• Some “graphics state” commands:– Set line width

• Number w.

– Set line style• [ a b ] 0 d ( [ ] is solid line)

– Set stroke colour• R G B RG

– Set fill colour • R G B rg

Page 43: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Graphic manipulations

• Explained in detail in separate lecture.

• Translation, scaling, rotation.

• May be applied to vector or bitmap images.

• Less artefacts with vectors.

• This is set up as a “graphics state” in PDF using the cm operator.

Page 44: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Scaling

• Making objects larger or smaller

• In PDF we change the “current transformation matrix” of the “graphics state” using the cm operator.

• For scaling:– sx 0 0 sy 0 0 cm

Page 45: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Translation

• Moving objects left/right and up/down

• In PDF we change the “current transformation matrix” of the “graphics state” using the cm operator.

• For translation:– 1 0 0 1 tx ty cm

Page 46: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Rotation

• Making objects larger or smaller• In PDF we change the “current

transformation matrix” of the “graphics state” using the cm operator.

• For rotation:– cos sin -sin cos 0 0 cm

– Eg• 0.707 0.707 –0.707 0.707 0 0 cm

rotates the current co-ordinates by 45o

Page 47: Graphics Vector graphics 2D only. Overview of common functions and parameters.. Drawing in Matlab. We will see how a common file format stores the information

Further information

• Hill, Computer Graphics. Prentice Hall.

• Adobe specifications available from www.adobe.com– Postscript– PDF