graphics vector graphics 2d only. overview of common functions and parameters.. drawing in matlab....
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b5478550346d41a8b6199/html5/thumbnails/47.jpg)
Further information
• Hill, Computer Graphics. Prentice Hall.
• Adobe specifications available from www.adobe.com– Postscript– PDF