The previous chapter covers most of the simple graphics that can be generated in BASIC V using special custom designed keywords. Lines, points, triangles, segments and sectors including circles, ellipses and squares and rectangles can also be drawn using the PLOT command of which there are 23. More are listed but have special functions.
Command format... PLOT k,x,y where k is the plot mode (refer to BBC BASIC Reference Manual) and x and y are the co-ordinates of a point required to position the shape. Within each PLOT command there is a block of 8 digits which act as an offset allowing programmer to plot a shape in either relative or absolute co-ordinates. 3 apply different colour to the drawing in relative co-ordinates and 3 apply different colour in absolute co-ordinates (see appendix). The following examples both of which give an identically positioned line will hopefully show the distinction between absolute and relative forms.
Absolute Plot
PLOT a line from X=500, Y=500 to X=2000, Y=2000
MODE 1920,1080,32
PLOT 4,500,500
PLOT 5,2000,2000
Relative Plot
Plot a line from X=500, Y=500 to X=1500 ,Y=1500
MODE 1920,1080,32
PLOT 4,500,500
PLOT 1,1500,1500
The co-ordinates (1500,1500) is relative to the position of the graphics cursor. The absolute value is obtained by adding this offset to the previous position (1500,1500) + (500,500) giving the position (2000,2000).
PLOT 4 is equivalent to a MOVE command.
MODE 1920,1080,32
MOVE 1000,400 : REM Left corner
MOVE 3000,400 : REM Right corner
PLOT 85,2000,1500 : REM Top corner
Example using absolute co-ordinates
MODE 1920,1080,32
MOVE 1000,400 : REM Bottom left corner
PLOT 101,2000,1500 : REM Top right corner
Example using relative co-ordinates
MODE 1920,1080,32
MOVE 1000,400
PLOT 97,1000,1100
Defined by 3 points the parallelogram is a rectangle that has been sheered sideways (figure 1)
Fig 1 Parallelogram
MODE 1920,1080,32
MOVE 1000,500
MOVE 2500,500
PLOT 117,3000,1500
To sheer the parallelogram to the left alter the PLOT command to...
PLOT 117,2000,1500
Move to circle centre (1920,1080 = centre of screen in this example). For a circle with a radius of 1000 OS units simply add 1000 to the X co-ordinate, 1920 to give 2920.
MODE 1920,1080,32
MOVE 1920,1080 : REM Centre
PLOT 149,2920,1080 : REM Centre(X)+radius, Centre(Y)
An identical circle can be plotted using the relative plotting option...
MODE 1920,1080,32
MOVE 1920,1080 : REM Centre
PLOT 145,1000,0 : REM Radius,0
As well as a centre point, an ellipse requires the co-ordinates for 2 additional points - a righthand point along the horizontal axis and the highest point. See drawing (figure 2)
Fig 2 Calculating the co-ordinates for an ellipse
1. Assign the ellipse centre (1920,1080) to the first MOVE command (MOVE 1920,1080). All co-ordinates are referenced from this point.
2. Draw horizontal line through the ellipse centre to give 2 co-ordinate points that intersect the circumference. With a horizontal co-ordinate of 500 we get...
MOVE 1920+500, 1080 or MOVE 2420,1080
3. Draw another line through the ellipse centre to give 2 co-ordinate points intersecting with the circumference as shown. With co-ordinates of X= 500 and Y=700 we get...
MOVE 1920+500,1080+700 or MOVE 2420,1780.
This example uses the right side co-ordinates. The ellipse can be drawn using the left side ones bearing in mind that values are subtracted from the centre reference point (1920,1080).
Important
Example shows the horizontal co-ordinates for point B and C to be the same (1920 + 500). This is an approximation - In practice the horizontal co-ordinates for point B and C will be different depending on the angle of rotation of the ellipse.
MODE 1920,1080,32
MOVE 1920,1080 : REM Set centre
MOVE 2420,1080 : REM Define right-hand point
PLOT 197,2420,1780 : REM Define highest point
The same ellipse can be drawn using the left-hand points, D and E
MODE 1920,1080,32
MOVE 1920,1080 : REM Set centre
MOVE 1420,1080 : REM Define left-hand point
PLOT 197,1420,380 : REM Define lowest point
An arc is part of a circle and figure 3 shows how the co-ordinates are defined...
Fig 3 Plotting a quarter arc
MODE 1920,1080,32
MOVE 1920,1080 : REM Centre
MOVE 920,1080 : REM Start point
PLOT 165,1920,80 : REM End point
A sector consists of an arc of a circle bound by 2 radii (figure 4)
Fig 4 Plotting a sector
MODE 1920,1080,32
MOVE 1920,1080 : REM centre
MOVE 920,1080 : REM start point
PLOT 181,1200,80 : REM end point - effectively determines sector angle
Similar to a sector but is the area of a line between 2 points on a circle and its circumference (figure 5). In fact the only difference in the code is the PLOT command 173 instead of 181.
Fig 5 Plotting a segment
MODE 1920,1080,32
MOVE 1920,1080 : REM centre
MOVE 920,1080 : REM start point
PLOT 173,1200,80 : REM end point
There are also some special PLOT commands to colour fill a closed object no matter its complexity and a unique Block copy/move PLOT command that can be used to create unusual animation effects. All these commands are listed in the Appendix:
That concludes the construction of the basic shapes. The next section covers some slightly more complex shapes and patterns to show the versatility of RISC OS BASIC.