03-18-2004, 07:15 AM
Run the code, you'll understand
I have way to much spare time... :lol:
Code:
'Nice thingy by J. Pihl [Z!re | XiberLord]
'Free, use as you like, give credits if you want.
'$DYNAMIC
TYPE part
x AS SINGLE
y AS SINGLE
vx AS SINGLE
vy AS SINGLE
c AS INTEGER
END TYPE
DIM CenterX AS LONG
DIM CenterY AS LONG
RANDOMIZE TIMER
CONST MaxParticles = 500
Active = 100
CenterX = 160
CenterY = 100
DIM p(MaxParticles) AS part
FOR a = 0 TO Active
p(a).x = 160 + 80 * RND - 80 * RND
p(a).y = 100 + 100 * RND - 100 * RND
p(a).c = 9 + (a / (Active / 2))
NEXT
CLS
CONST PI = 3.141593
SCREEN 12
n = 4
CLS
DO
FOR b = 0 TO PI * 2 STEP .05
r = 1 + SIN(n * PI + b)
sx = 320 + r * COS(g + PI) * 50
sy = 240 + r * SIN(g + PI) * 50
r = 1 + SIN(n * PI + b)
sx2 = 320 + r * COS(g + PI + PI / 2) * 50
sy2 = 240 + r * SIN(g + PI + PI / 2) * 50
FOR Angle = b TO 2 * PI + b STEP .007
r = 1 + SIN(n * Angle + b)
x = sx + r * COS(Angle) * 100
y = sy + r * SIN(Angle) * 100
PSET (x, y), 9 + r
IF INKEY$ <> "" THEN END
NEXT
r = 1 + SIN(n + b)
x = sx2 + r * COS(b) * 100
y = sy2 + r * SIN(b) * 100
CIRCLE (x, y), SIN(r) * 50, 15
g = b
r = 1 + SIN(n * PI + b)
x = 320 + r * COS(g + 0) * 50
y = 240 + r * SIN(g + 0) * 50
x2 = 320 + r * COS(g + PI / 2) * 50
y2 = 240 + r * SIN(g + PI / 2) * 50
LINE (x, y)-(x2, y2), 13
x = 320 + r * COS(g + PI) * 50
y = 240 + r * SIN(g + PI) * 50
x2 = 320 + r * COS(g + PI + PI / 2) * 50
y2 = 240 + r * SIN(g + PI + PI / 2) * 50
LINE (x, y)-(x2, y2), 13
x = 320 + r * COS(g + PI / 2) * 50
y = 240 + r * SIN(g + PI / 2) * 50
x2 = 320 + r * COS(g + PI) * 50
y2 = 240 + r * SIN(g + PI) * 50
LINE (x, y)-(x2, y2), 14
x = 320 + r * COS(g + PI + PI / 2) * 50
y = 240 + r * SIN(g + PI + PI / 2) * 50
x2 = 320 + r * COS(g + PI * 2) * 50
y2 = 240 + r * SIN(g + PI * 2) * 50
LINE (x, y)-(x2, y2), 14
CIRCLE (320, 240), SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 2 + 50, 15
CenterX = x
CenterY = y
FOR a = 0 TO Active / 2
PSET (p(a).x, p(a).y), 0
IF p(a).x > CenterX THEN p(a).vx = p(a).vx - .1 - (RND / 5)
IF p(a).x < CenterX THEN p(a).vx = p(a).vx + .1 + (RND / 5)
IF p(a).y > CenterY THEN p(a).vy = p(a).vy - .1 - (RND / 5)
IF p(a).y < CenterY THEN p(a).vy = p(a).vy + .1 + (RND / 5)
p(a).vx = p(a).vx / 1.01
p(a).vy = p(a).vy / 1.01
IF INT(p(a).vx) = 0 AND INT(p(a).vy) = 0 THEN
IF INT(p(a).x) = CenterX AND INT(p(a).y) = CenterY THEN
p(a).vx = 25 * RND - 25 * RND
p(a).vy = 25 * RND - 25 * RND
END IF
END IF
p(a).x = p(a).x + p(a).vx
p(a).y = p(a).y + p(a).vy
PSET (p(a).x, p(a).y), p(a).c
NEXT
r = 1 + SIN(n + b)
CenterX = sx2 + r * COS(b) * 100
CenterY = sy2 + r * SIN(b) * 100
FOR a = Acrive / 2 TO Active
PSET (p(a).x, p(a).y), 0
IF p(a).x > CenterX THEN p(a).vx = p(a).vx - .1 - (RND / 5)
IF p(a).x < CenterX THEN p(a).vx = p(a).vx + .1 + (RND / 5)
IF p(a).y > CenterY THEN p(a).vy = p(a).vy - .1 - (RND / 5)
IF p(a).y < CenterY THEN p(a).vy = p(a).vy + .1 + (RND / 5)
p(a).vx = p(a).vx / 1.01
p(a).vy = p(a).vy / 1.01
IF INT(p(a).vx) = 0 AND INT(p(a).vy) = 0 THEN
IF INT(p(a).x) = CenterX AND INT(p(a).y) = CenterY THEN
p(a).vx = 25 * RND - 25 * RND
p(a).vy = 25 * RND - 25 * RND
END IF
END IF
p(a).x = p(a).x + p(a).vx
p(a).y = p(a).y + p(a).vy
PSET (p(a).x, p(a).y), p(a).c
NEXT
FOR Angle = b TO 2 * PI + b STEP .007
r = 1 + SIN(n * Angle + b)
x = sx + r * COS(Angle) * 100
y = sy + r * SIN(Angle) * 100
PSET (x, y), 0
IF INKEY$ <> "" THEN END
NEXT
r = 1 + SIN(n + b)
x = sx2 + r * COS(b) * 100
y = sy2 + r * SIN(b) * 100
CIRCLE (x, y), SIN(r) * 50, 0
g = b
r = 1 + SIN(n * PI + b)
x = 320 + r * COS(g + 0) * 50
y = 240 + r * SIN(g + 0) * 50
x2 = 320 + r * COS(g + PI / 2) * 50
y2 = 240 + r * SIN(g + PI / 2) * 50
LINE (x, y)-(x2, y2), 0
x = 320 + r * COS(g + PI) * 50
y = 240 + r * SIN(g + PI) * 50
x2 = 320 + r * COS(g + PI + PI / 2) * 50
y2 = 240 + r * SIN(g + PI + PI / 2) * 50
LINE (x, y)-(x2, y2), 0
x = 320 + r * COS(g + PI / 2) * 50
y = 240 + r * SIN(g + PI / 2) * 50
x2 = 320 + r * COS(g + PI) * 50
y2 = 240 + r * SIN(g + PI) * 50
LINE (x, y)-(x2, y2), 0
x = 320 + r * COS(g + PI + PI / 2) * 50
y = 240 + r * SIN(g + PI + PI / 2) * 50
x2 = 320 + r * COS(g + PI * 2) * 50
y2 = 240 + r * SIN(g + PI * 2) * 50
LINE (x, y)-(x2, y2), 0
CIRCLE (320, 240), SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 2 + 50, 0
NEXT
LOOP
I have way to much spare time... :lol: