Prev
Monthly Display - December 2017

 

Defined-Shape Tonal Abstract 1


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

An equilateral triangle, looking a little high on the background, but actually has 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 on a Vic-20 computer.

The stored maxima and minima sytem working to produce this image with gradiernts 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 on 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 4


320 x 352 pixels, produced on 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.

PROGRAM LISTING

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

 

 

Double-sized Version:

 

 

 

Defined-Shape Tonal Abstract 5


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

This tonal abstract relied on interpretting 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.

Excellent geometry and mathematics!

 

Double-sized Version:

 

 


Prev
Monthly Display - December 2017