_TITLE "Guts" 'passed down through ages, I first encountered it through Richard Russel author BBC 4 Windows ' 2019-04-05 B+ translation to QB64 from: Guts.bas SmallBASIC 0.12.0 2015-11-17 MGA/B+
'modified > GUTS Original ARM BBC BASIC version by Jan Vibe, 800x600 ?
bX(1) = -100: A = 0
COLR
(16 - N
) = _RGB32(7 * N
+ 150, 14 * N
+ 45, 14 * N
+ 45)
X1
= RND * xmax: Y1
= RND * ymax: DX1
= (RND * 16 + 1) * (RND - .5): DY1
= (RND * 16 + 1) * (RND - .5)X2
= RND * xmax: Y2
= RND * ymax: DX2
= (RND * 16 + 1) * (RND - .5): DY2
= (RND * 16 + 1) * (RND - .5) H
= X1
+ DX1:
IF H
< 0 OR H
> xmax
THEN DX1
= (RND * 16 + 1) * -SGN(DX1
) H
= Y1
+ DY1:
IF H
< 0 OR H
> ymax
THEN DY1
= (RND * 16 + 1) * -SGN(DY1
) X1 = X1 + DX1: Y1 = Y1 + DY1
X2
= X2
+ DX2: Y2
= Y2
+ DY2: A
= (A
+ 10) MOD 360: Z
= (SIN(_D2R(A
) + 1)) + 2 bX(N - 1) = bX(N): bY(N - 1) = bY(N): bZ(N - 1) = bZ(N)
bX(15) = X2: bY(15) = Y2: bZ(15) = Z
FOR N
= 1 TO 15: fcirc bX
(N
), bY
(N
), N
* bZ
(N
) + 5, COLR
(N
):
NEXT
'from Steve Gold standard
RadiusError = -Radius
X = Radius
Y = 0
' Draw the middle span here so we don't draw it twice in the main loop,
' which would be a problem with blending turned on.
LINE (CX
- X
, CY
)-(CX
+ X
, CY
), C
, BF
RadiusError = RadiusError + Y * 2 + 1
LINE (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), C
, BF
LINE (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), C
, BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
LINE (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), C
, BF
LINE (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), C
, BF