Prev
Gallery 4 - Vic-20 Graphics - page 15 (of 17)
Next

More Details | Home Page Menu / Back to Overview Page

 

Defined-Shape Tonal Abstracts

All of the images on this page are developments of ‘defined-shape tonal abstracts’.

Fistly, all of the images use the same system of tone rendering - using the 19 value halftone system already used in some of the pieces shown on previous pages.

All of these images are abstract images, that use areas of graded tones running in contrasting directions.

Finally, all of these images use at least one ‘defined shape’ as part of its composition. As an example, the first image talks about using a modified drawing routine to record the start and end points of horizontal lines that define a triangular shape. That system of defining a shape is used for the remaining images on this page. One program listing presented (just after ‘Defined-Shape Tonal Abstract 4’) contains the basic strategy used for creating all of these images (but will probably require a bit of work to ‘reverse-engineer’).

 

 

 

Defined-Shape Tonal Abstract 1


320 x 352 pixels, produced using a Vic-20 computer.

Here, an equilateral triangle, looks a little high on the background rectangle, but actually does have its centre on the centre of the background rectangle. I wanted a way of being able to incorporate a triangle in the tonal compositions being produced. The strategy I came up with was to set up a storage array for each pixel down the image, and put a value of -1 (obviously not a genuine minimum pixel value) for each minimum value in the array. I then use a modified line drawing routine to enter the resulting pixel values into the array as a minimum pixel value or a maximum pixel value. As I draw the lines of the triangle, I store the minimum and maximum pixel positions for each pixel down the image. The triangle is then defined as being between the minimum and maximum values in the array for the appropriate vertical pixel value. I realised that this strategy could be used for many other shapes as well - the one thing that this strategy could not tolerate is needing to store more than one set of maxima and minima for each vertical pixel (such as for a star shape with 2 bottom points).

This image is actually a test image - I have used the modified line drawing routine to actually draw the points that were calculated, to check that the routine was generating the correct information to be entered into the array.

 

 

Double-sized Version:

 

 

 

 

 

Defined-Shape Tonal Abstract 2


320 x 352 pixels, produced using a Vic-20 computer.

The stored maxima and minima system working to produce this image with gradients running in opposite directions. I also lowered the triangle a little, so that it FELT closer to the centre of the background rectangle.

 

 

Double-sized Version:

 

 

 

 

Defined-Shape Tonal Abstract 3


320 x 352 pixels, produced using a Vic-20 computer.

The points of the shape can be rotated before the lines are drawn and maxima and minima are stored.

 

 

Double-sized Version:

 

 

 

 

 

Defined-Shape Tonal Abstract 3A


320 x 352 pixels, produced using a Vic-20 computer.

If you notice in the previous rendering, the gradient within the triangle is determined by the vertical position in the image, which is a very efficient way of defining the gradients. However, I wanted to see if I could change the angle of the gradient as it is rendered in the image. Here, I've angled the gradient with the same angle as the rotated triangle. I did find that the geometry used for changing the angle of the gradients was quite challenging, and requires a considerable increase in computational time. However, the results show how well the strategies and logic works.

 

 

Double-sized Version:

 

 

 

 

 

Defined-Shape Tonal Abstract 4


320 x 352 pixels, produced using a Vic-20 computer.

Here, the 3 shapes are toned from the lightest tone (with some halftone pattern) to the darkest tone (again with some halftone pattern), by selecting appropriate vertical markers for these gradient start and end points. This image took about 8 hours to render.

 

 

Double-sized Version:

 

This image' s PROGRAM LISTING

(note: a variable name [maximum of 2 characters] followed by a '%' sign indicates an integer value, a variable name followed by a '$' sign is a string value, and without any following sign [the default], it is a floating point value):

1 SH%=352:SW%=320:PB%=0
2 RD=145:HS=59:XP%=1:YP%=1:CX=1024+SW%/2:CY=1024+SH%/2:XS%=1:YS%=1:XB%=1:YB%=1
3 UW%=3:UH%=3:NH%=INT(SW%/UW%)+1:NV%=INT(SH%/UH%)+1
4 G1=CX:H1=CY-142:G2=CX-123:H2=CY+71:G3=CX+123:H3=H2:A=00:B=00:A1=A*π/180
5 XB%=1024-INT((NH%*UW%-SW%)/2):YB%=1024-INT((NV%*UH%-SH%)/2)
6 DIMTB%(9,8):DIMTD%(18,1):DIMSX%(351,1)
7 FORI=0TO9:FORJ=0TO8:TB%(I,J)=0:NEXT:NEXT
8 FORI=1TO9:TB%(I,4)=1:NEXT
9 FORI=2TO9:TB%(I,5)=1:NEXT
10 FORI=3TO9:TB%(I,2)=1:NEXT
11 FORI=4TO9:TB%(I,1)=1:NEXT
12 FORI=5TO9:TB%(I,3)=1:NEXT
13 FORI=6TO9:TB%(I,0)=1:NEXT
14 FORI=7TO9:TB%(I,7)=1:NEXT
15 FORI=8TO9:TB%(I,6)=1:NEXT
16 TB%(9,8)=1
20 REM DEFINE 19 UNITS
22 FORI=0TO9:TD%(I,0)=I:TD%(I,1)=9:NEXT
24 FORI=10TO18:TD%(I,0)=9:TD%(I,1)=18-I:NEXT
25 FORI=0TO351:SX%(I,0)=-1:SX%(I,1)=-1:NEXT
26 S=SIN(A1):C=COS(A1):TX=G1-CX:TY=H1-CY:F=TY*C-TX*S:G=TX*C+TY*S:G1=CX+G:H1=CY+F+B
27 TX=G2-CX:TY=H2-CY:F=TY*C-TX*S:G=TX*C+TY*S:G2=CX+G:H2=CY+F+B
28 TX=G3-CX:TY=H3-CY:F=TY*C-TX*S:G=TX*C+TY*S:G3=CX+G:H3=CY+F+B
30 REM MAIN ROUTINE **
31 REM DRAW LINES OF SHAPE TO LOAD INTO SHAPE ARRAY
32 P1%=INT(G1):P2%=INT(G2):Q1%=INT(H1):Q2%=INT(H2):GOSUB500
33 P1%=INT(G1):P2%=INT(G3):Q1%=INT(H1):Q2%=INT(H3):GOSUB500
34 P1%=INT(G2):P2%=INT(G3):Q1%=INT(H2):Q2%=INT(H3):GOSUB500
37 SYS1166:REM INIT SMALL HIRES SCREEN
38 SYS1230:REM CLEAR SCREEN
39 SYS1264:REM SHOW LARGE ON SMALL SCREEN
40 FORV=0TONV%
42 FORM=0TONH%
43 XS%=XB%+M*UW%:YS%=YB%+V*UH%
44 FORK=0TO8
45 V2=V/2:V3=INT(V/2)
46 IFV2-V3<0.2THEN50
48 GOTO80
50 M2=M/2:M3=INT(M/2)
51 IFM2-M3<0.2THEN54
52 GOTO60
54 IFK<3THENXP%=XS%+K:YP%=YS%:PB%=0:GOSUB300
56 IFK>2ANDK<6THENXP%=XS%+K-3:YP%=YS%+1:PB%=0:GOSUB300
58 IFK>5THENXP%=XS%+K-6:YP%=YS%+2:PB%=0:GOSUB300
59 GOTO110
60 IFK<3THENXP%=XS%+K:YP%=YS%:PB%=1:GOSUB300
62 IFK>2ANDK<6THENXP%=XS%+K-3:YP%=YS%+1:PB%=1:GOSUB300
64 IFK>5THENXP%=XS%+K-6:YP%=YS%+2:PB%=1:GOSUB300
66 GOTO110
80 M2=M/2:M3=INT(M/2)
81 IFM2-M3<0.2THEN84
82 GOTO90
84 IFK<3THENXP%=XS%+K:YP%=YS%:PB%=1:GOSUB300
86 IFK>2ANDK<6THENXP%=XS%+K-3:YP%=YS%+1:PB%=1:GOSUB300
88 IFK>5THENXP%=XS%+K-6:YP%=YS%+2:PB%=1:GOSUB300
89 GOTO110
90 IFK<3THENXP%=XS%+K:YP%=YS%:PB%=0:GOSUB300
92 IFK>2ANDK<6THENXP%=XS%+K-3:YP%=YS%+1:PB%=0:GOSUB300
94 IFK>5THENXP%=XS%+K-6:YP%=YS%+2:PB%=0:GOSUB300
110 NEXTK
111 SYS1264:REM SHOW LARGE ON SMALL SCREEN
112 NEXTM
114 NEXTV
238 SYS13680:REM GOTO BIGART MAIN COMMAND ROUTINE FOR MANUAL EDITING
240 GETA$:IFA$=""THEN240
242 IFA$=" "THENSYS1122:END
244 GOTO240
300 REM PLOT TONE PATTRN A OR B
302 REM USE XP%,YP%,TT%
303 PX=XP%:PY=YP%:HX%=XP%-1024:HY%=YP%-1024
304 IFHY%>351THENHY%=INT(351)
305 IFHY%<0THENHY%=0
306 IFHX%<0THENHX%=0
307 IFHX%>319THENHX%=INT(319)
308 IFSX%(HY%,0)=-1THEN312
309 IFHX%<SX%(HY%,0)THEN312
310 IFHX%>SX%(HY%,1)THEN312
311 GOTO320
312 D=SQR((PX-CX)*(PX-CX)+(PY-CY)*(PY-CY))
313 IFD<RDTHEN318
314 GOTO319
318 L=1+17*(PY-(CY-RD))/(RD+RD):TT%=INT(L):GOTO322
319 L=18-17*(PY-1024)/SH%:TT%=INT(L):GOTO322
320 L=18-17*(PY-H1)/(H3-H1):TT%=INT(L):GOTO322
322 IFTT%<0THENTT%=0
324 IFTT%>18THENTT%=18
326 IFPB%=0THEN330
328 IFTB%(TD%(TT%,1),K)=0THENGOSUB400
329 RETURN
330 IFTB%(TD%(TT%,0),K)=1THENGOSUB400
332 RETURN
400 REM PLOT PIXELS
404 X2=INT(PX/256):X1=PX-X2*256:POKE3040,X1:POKE3041,X2
406 Y2=INT(PY/256):Y1=PY-Y2*256:POKE3042,Y1:POKE3043,Y2
408 SYS1397:REM PLOTSUB
409 SYS1264:REM SHOW LARGE ON SMALL SCREEN
410 RETURN
500 REM LINE STORE IN ARRAY
505 R%=0:DX%=ABS(P2%-P1%):DY%=ABS(Q2%-Q1%):GX%=P1%:GY%=Q1%
510 HX%=GX%-1024:HY%=GY%-1024
512 IFHY%>=0ANDHY%<352THEN514
513 GOTO520
514 IFHX%>=0ANDHX%<320THEN516
515 GOTO520
516 IFSX%(HY%,0)=-1THENSX%(HY%,0)=HX%:SX%(HY%,1)=HX%:GOTO520
517 IFHX%<SX%(HY%,0)THENSX%(HY%,0)=HX%
518 IFHX%>SX%(HY%,1)THENSX%(HY%,1)=HX%
520 IFDX%<DY%THEN540
525 IFGX%=P2%THENRETURN
530 GX%=GX%+(P2%<P1%)-(P2%>P1%):R%=R%+DY%:IFR%+R%<DX%THEN510
535 GY%=GY%+(Q2%<Q1%)-(Q2%>Q1%):R%=R%-DX%:GOTO510
540 IFGY%=Q2%THENRETURN
550 GY%=GY%+(Q2%<Q1%)-(Q2%>Q1%):R%=R%+DX%:IFR%+R%<DY%THEN510
555 GX%=GX%+(P2%<P1%)-(P2%>P1%):R%=R%-DY%:GOTO510

 

 

 

 

Defined-Shape Tonal Abstract 5


320 x 352 pixels, produced using a Vic-20 computer.

This tonal abstract uses 2 gradients that are set to angles other than zero or 90 degrees.

 

 

Double-sized Version:

 

 

 

 

 

Defined-Shape Tonal Abstract 6


320 x 352 pixels, produced using a Vic-20 computer.

This tonal abstract relied on interpreting tonal data for a complex construction of 11 stored shapes, each with their own rules for determining their tonal values - very complex, and right on the edge of using all the memory resources available to the machine. The final rendering took about 10 hours.

Very pleasing geometry, mathematics, graphic design, and programming (strategy, logic and efficiency)!

 

 

Double-sized Version:

 

 

More Details | Home Page Menu / Back to Overview Page


Prev
Gallery 4 - Vic-20 Graphics - page 15 (of 17)
Next