_TITLE "*** Chaotic Scattering *** by vince and mod by bplus 2018-02-15 click mouse to reset LASER"
qb(0) = &HFF000000
qb(1) = &HFF000088
qb(2) = &HFF008800
qb(3) = &HFF008888
qb(4) = &HFF880000
qb(5) = &HFF880088
qb(6) = &HFF888800
qb(7) = &HFFCCCCCC
qb(8) = &HFF888888
qb(9) = &HFF0000FF
qb(10) = &HFF00FF00
qb(11) = &HFF00FFFF
qb(12) = &HFFFF0000
qb(13) = &HFFFF00FF
qb(14) = &HFFFFFF00
qb(15) = &HFFFFFFFF
cs
(i
).r
= RND * (maxr
- 20) + 20 cs
(i
).c
= qb
(INT(RND * 15) + 1) ck = 0
cs
(i
).x
= INT(RND * (sw
- 2 * cs
(i
).r
)) + cs
(i
).r
cs
(i
).y
= INT(RND * (sh
- 2 * cs
(i
).r
)) + cs
(i
).r
ck = 1
IF ((cs
(i
).x
- cs
(c
).x
) ^ 2 + (cs
(i
).y
- cs
(c
).y
) ^ 2) ^ .5 < cs
(i
).r
+ cs
(c
).r
THEN ck
= 0:
EXIT FOR cs
(i
).x
= INT(RND * (sw
- 2 * cs
(i
).r
)) + cs
(i
).r
cs
(i
).y
= INT(RND * (sh
- 2 * cs
(i
).r
)) + cs
(i
).r
'find a place not inside a circle
xx = sw / 2
yy = sh / 2
WHILE checkxy%
(xx
, yy
) = 0 xx
= INT(RND * (sw
- 2 * maxr
)) + maxr
yy
= INT(RND * (sh
- 2 * maxr
)) + maxr
_DELAY 5 'to get dang screen shot 'get mouse x, y if click
'cls
LINE (0, 0)-(sw
, sh
), qb
(0), BF
'draw circles
fcirc cs(c).x, cs(c).y, cs(c).r
'if click make sure click was not inside one of the circles
f = checkxy%(mx, my)
xx = mx
yy = my
f = -1
x0 = xx
y0 = yy
t = 0
t = t + 1
IF (x
- cs
(c
).x
) ^ 2 + (y
- cs
(c
).y
) ^ 2 < cs
(c
).r
* cs
(c
).r
THEN a1
= _ATAN2(y
- cs
(c
).y
, x
- cs
(c
).x
) LINE (x0
, y0
)-(x
, y
), qb
(14) x0 = x
y0 = y
a = a2
t = 0
LINE (x0
, y0
)-(x
, y
), qb
(14)
IF (x
- cs
(c
).x
) ^ 2 + (y
- cs
(c
).y
) ^ 2 < cs
(c
).r
* cs
(c
).r
THEN checkxy%
= 0:
EXIT FUNCTION checkxy% = 1
'Steve McNeil's copied from his forum note: Radius is too common a name
RadiusError = -subRadius
X = subRadius
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
), , BF
RadiusError = RadiusError + Y * 2 + 1
LINE (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), , BF
LINE (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), , BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
LINE (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), , BF
LINE (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), , BF