Float xa[10][51], ya[10][51], za[10][51] Float xb[51], yb[51], zb[51] Float xxa[10][51], yya[10][51] Float xxb[51], yyb[51] Float sia[10], coa[10] Float dxa[10], dya[10] Int cnta[10],x[10],y[10] Int c[3] Randomize num = 3 c[0] = 7; c[1] = 6; c[2] = 4 sia[0] = .2 coa[0] = Sqrt(1 - sia[0] * sia[0]) sib = .7 cob = Sqrt(1 - sib * sib) Do k = 1 To num sia[k] = rand()/2-0.25 coa[k] = Sqrt(1 - sia[k] * sia[k]) Loop n = 50 a = .0025 s = 7 Do j = 0 To num x[j] = 320; y[j] = 240 Loop Do k = 1 To 50 Do j = 0 To num xa[j][k] = x[j]; ya[j][k] = y[j] Loop j xb[k] = 320; yb[k] = 240 Loop k Do k = 1 To 50 za[0][k] = c[k%3] + 8 zb[k] = c[k%3] Do j= 1 To num za[j][k] = 2+Random(2)+8*Random(2) Loop j za[0][3] = 15; za[1][3] = 15 Loop k Do j= 0 To num dxa[j] = 0; dya[j] = 0 cnta[j] = 15 Loop cntb = 9 Do Read quit key (27) Do k = 1 To n xxb[k] = xb[k]; yyb[k] = yb[k] Do j = 0 To num xxa[j][k] = xa[j][k]; yya[j][k] = ya[j][k] Loop j Loop k Do j = 0 To num dxa[j] = dxa[j] + .5 * s * (rand() - .5) + a * (320 - xa[j][1]) dya[j] = dya[j] + .5 * s * (rand() - .5) + a * (240 - ya[j][1]) r = Sqrt(dxa[j] * dxa[j] + dya[j] * dya[j]) + 1 dxa[j] = s * dxa[j] / r; dya[j] = s * dya[j] / r dxatmp = dxa[j] * coa[j] + dya[j] * sia[j] dya[j] = dya[j] * coa[j] - dxa[j] * sia[j] dxa[j] = dxatmp xa[j][1] = xa[j][1] + dxa[j]; ya[j][1] = ya[j][1] + dya[j] Loop j dxb = xa[0][1] - xb[1]; dyb = ya[0][1] - yb[1] r = Sqrt(dxb * dxb + dyb * dyb) + 1 dxb = .5 * s * dxb / r; dyb = .5 * s * dyb / r dxbtmp = dxb * cob + dyb * sib dyb = dyb * cob - dxb * sib dxb = dxbtmp xb[1] = xb[1] + dxb; yb[1] = yb[1] + dyb Do k = 2 To n xb[k] = (3*xb[k - 1] + 2*xb[k]) / 5 yb[k] = (3*yb[k - 1] + 2*yb[k]) / 5 Do j = 0 To num xa[j][k] = (3*xa[j][k - 1] + 2*xa[j][k]) / 5 ya[j][k] = (3*ya[j][k - 1] + 2*ya[j][k]) / 5 Loop j Loop k cntb = cntb - 1 If cntb = 0 sib = -sib; cntb = Int(6 * rand() + 6) End If Do j = 0 To num cnta[j] = cnta[j] - 1 If cnta[j] = 0 sia[j] = -sia[j]; cnta[j] = 15 End If Loop j Delay (25); Cls liner (n - 23, xb, yb, zb, 3) @ Do j = 0 To num liner (n, xa[j], ya[j], za[j], 5) @ Loop Loop //--------------------------------------------------------------------------- Task liner (Int n, Float x[], Float y[], Float z[], Int rad) r = Float(rad) s = 2 Do k = s To n - 1 Solid color (z[k+1]) Solid circle (x[k+1], y[k+1], r) r = 0.98*r Loop k End liner //--------------------------------------------------------------------------- Float rand() Return Random(25000)/25000.0 End rand