_TITLE "Plasmatic Digital Clock 2" ' b+ 2020-01-21 modified: ' Digital Plasmatic Clock b+ 2020-01-20 translated and modified from SmallBASIC
' Plasma Magnifico - updated 2015-11-26 for Android
' This program creates a plasma surface, which looks oily or silky.
'=====================================================================================================
'
' Use spacebar to change color set, + to increase clock size and - to decrease clock size
'
'=====================================================================================================
CONST dat
= "1110111000001101111100011111100101110111011111101001001111111111011011" sq = 15: xmax = 34 * sq: ymax = 8 * sq
restart:
r1 = r: g1 = g: b1 = b
FOR m
= 0 TO 17: m1
= 17 - m
f1 = (m * r) / 18: f2 = (m * g) / 18: f3 = (m * b) / 18: c(i) = rgbf(f1, f2, f3): i = i + 1
FOR m
= 0 TO 17: m1
= 17 - m
f1 = (m + m1 * r) / 18: f2 = (m + m1 * g) / 18: f3 = (m + m1 * b) / 18: c(i) = rgbf(f1, f2, f3): i = i + 1
FOR m
= 0 TO 17: m1
= 17 - m
f1 = (m1 + m * r) / 18: f2 = (m1 + m * g) / 18: f3 = (m1 + m * b) / 18: c(i) = rgbf(f1, f2, f3): i = i + 1
FOR m
= 0 TO 17: m1
= 17 - m
f1 = (m1 * r) / 18: f2 = (m1 * g) / 18: f3 = (m1 * b) / 18: c(i) = rgbf(f1, f2, f3): i = i + 1
p
(n
).x
= RND * xmax: p
(n
).y
= RND * ymax: p
(n
).dx
= RND * 2 - 1: p
(n
).dy
= RND * 2 - 1
p(i).x = p(i).x + p(i).dx
IF p
(i
).x
> xmax
OR p
(i
).x
< 0 THEN p
(i
).dx
= -p
(i
).dx
p(i).y = p(i).y + p(i).dy
IF p
(i
).y
> ymax
OR p
(i
).y
< 0 THEN p
(i
).dy
= -p
(i
).dy
d = 0
dx = x - p(n).x: dy = y - p(n).y
k
= SQR(dx
* dx
+ dy
* dy
) d
= d
+ (SIN(k
* f
(n
)) + 1) / 2 FOR n
= 1 TO 8 'clock digits over background clr
= _RGBA32(255 - i
* (255 / sq
), (.5 * sq
- i
) * 255 / sq
, 0, 380 / sq
) LINE ((n
- 1) * 4 * sq
+ 2 * sq
+ .5 * sq
- i
, sq
+ sq
+ .5 * sq
- i
)-STEP(2 * i
, 2 * i
), clr
, BF
LINE ((n
- 1) * 4 * sq
+ 2 * sq
+ .5 * sq
- i
, 5 * sq
+ .5 * sq
- i
)-STEP(2 * i
, 2 * i
), clr
, BF
drawC
(n
- 1) * 4 * sq
+ sq
+ offset
, sq
+ offset
, MID$(dat$
, VAL(MID$(TIME$, n
, 1)) * 7 + 1, 7)
rgbf~&
= _RGB32(n1
* 255, n2
* 255, n3
* 255)
c
= _RGBA32(255 - i
* (255 / sq
), (.5 * sq
- i
) * 255 / sq
, 0, 380 / sq
) CASE 1:
LINE (x
+ .5 * sq
- i
, y
+ .5 * sq
+ i
)-(x
+ .5 * sq
+ i
, y
+ 2.5 * sq
- i
), c
, BF
CASE 2:
LINE (x
+ .5 * sq
- i
, y
+ 2.5 * sq
+ i
)-(x
+ .5 * sq
+ i
, y
+ 5.5 * sq
- i
), c
, BF
CASE 3:
LINE (x
+ .5 * sq
+ i
, y
+ .5 * sq
+ i
)-(x
+ 2.5 * sq
- 2 - i
, y
+ .5 * sq
- i
), c
, BF
CASE 4:
LINE (x
+ .5 * sq
+ i
, y
+ 2.5 * sq
+ i
)-(x
+ 2.5 * sq
- 2 - i
, y
+ 2.5 * sq
- i
), c
, BF
CASE 5:
LINE (x
+ .5 * sq
+ i
, y
+ 5.5 * sq
+ i
)-(x
+ 2.5 * sq
- 2 - i
, y
+ 5.5 * sq
- i
), c
, BF
CASE 6:
LINE (x
+ 2.5 * sq
- i
, y
+ .5 * sq
+ i
)-(x
+ 2.5 * sq
+ i
, y
+ 2.5 * sq
- i
), c
, BF
CASE 7:
LINE (x
+ 2.5 * sq
- i
, y
+ 2.5 * sq
+ i
)-(x
+ 2.5 * sq
+ i
, y
+ 5.5 * sq
- i
), c
, BF