home Balloting Simple trig Logistic map The Attractor of Henon Number doubling Barnsley's Fern The Sierpinski Triangle Double a number Choose an initial value between 0 and 1. Double it. Drop the integer part. Repeat. Values occur in discreet bunches. Bunches occur in multiples of five, depending on the number of decimal places used. Repeating patterns occur within the bunches. Do not select number = .5 Use 4 or 5 digit numbers. (Complete program code for VisualBASIC and DOS BASIC at bottom of page) Graphed circular: Graphed straight: Here are four images from my DOS BASIC version: Visual BASIC program code (circular): Private Sub run_Click() num = Val(numb.Text) REM: not = .5 ra = Val(radiusmult.Text) * 390 ITER = Val(itera.Text) anginc = Val(angleinc.Text) * (3.14159265358979 / 180) For a = 1 To ITER num = num * 2 If num > 1 Then num = num - 1 num = num * 50001 REM: Overrides VB rounding errors num = Int(num) num = num / 50000 angle = angle + anginc X = num * (Cos(angle) * ra) + 430 Y = num * 1.2284 * (Sin(angle) * ra) + 530 viewport.PSet (X, Y), RGB(0, 0, 0) Next a finalnum.Text = " " finalnum.Text = Str$(num) End Sub =========================================================== Visual BASIC program code (straight): Private Sub dsrunbtn_Click() trial = Val(trialsbox.Text) amp = Val(dsamp.Text) inc = Val(dsinc.Text) num = Val(numb.Text) REM: not = .5 ITER = Val(itera.Text) For b = 1 To trial X = 0 For a = 1 To ITER num = num * 2 If num > 1 Then num = num - 1 num = num * 50001 REM: Overrides VB rounding errors num = Int(num) num = num / 50000 X = X + inc Y = (num * amp) + 10 viewport.PSet (X, Y), RGB(0, 0, 0) Next a Next b finalnum.Text = " " finalnum.Text = Str$(num) End Sub =========================================================== DOS BASIC program code (circular): SCREEN 12 CLEAR CLS 5: LOCATE 2, 3: PRINT " " LOCATE 3, 3: PRINT " " LOCATE 4, 3: PRINT " " LOCATE 5, 3: PRINT " " LOCATE 2, 64: PRINT " " LOCATE 3, 64: PRINT " " LOCATE 4, 64: PRINT " " LOCATE 5, 64: PRINT " " KEY(9) ON ON KEY(9) GOSUB 400 KEY(10) ON ON KEY(10) GOSUB 500 COLOR 10 NUM = 0 : ANGINC = 0 : RADMULT = 0 : POINTS = 0 X = 0 : Y = 0 : ANGLE = 0 : RAD = 0 LOCATE 2, 64: PRINT "Number"; NUMB LOCATE 3, 64: PRINT "Angle inc"; ANGINCR LOCATE 4, 64: PRINT "Rad mult"; RADMULTI LOCATE 5, 64: PRINT "Points"; POINTSS LOCATE 2, 3: INPUT "Number 0 - 1"; NUMB REM: not = .5 LOCATE 3, 3: INPUT "angle increment"; ANGINCR LOCATE 4, 3: INPUT "radius multiplier"; RADMULTI LOCATE 5, 3: INPUT "points"; POINTSS NUM = NUMB ANGINC = ANGINCR RADMULT = RADMULTI POINTS = POINTSS LOCATE 2, 3: PRINT " " LOCATE 3, 3: PRINT " " LOCATE 4, 3: PRINT " " LOCATE 5, 3: PRINT " " LOCATE 2, 64: PRINT " " LOCATE 3, 64: PRINT " " LOCATE 4, 64: PRINT " " LOCATE 5, 64: PRINT " " LOCATE 2, 64: PRINT "Number"; NUMB LOCATE 3, 64: PRINT "Angle inc"; ANGINCR LOCATE 4, 64: PRINT "Rad mult"; RADMULTI LOCATE 5, 64: PRINT "Points"; POINTSS ANGINC = ANGINC * (3.14159265358979 / 180) RAD = 110 * RADMULT LOCATE 8, 2: PRINT "Start - press spacebar" LOCATE 9, 2: PRINT "Exit - F10 LOCATE 10, 2: PRINT "Restart - F9" VIEW (1, 1)-(639, 479) CLS LOCATE 2, 64: PRINT "Number"; NUMB LOCATE 3, 64: PRINT "Angle inc"; ANGINCR LOCATE 4, 64: PRINT "Rad mult"; RADMULTI LOCATE 5, 64: PRINT "Points"; POINTSS 40 I$ = INKEY$ IF I$ = "" THEN 40 LOCATE 9, 2: PRINT "Exit - F10 LOCATE 10, 2: PRINT "Restart - F9" LOCATE 8, 1: PRINT " " FOR C = 1 TO POINTS NUM = NUM * 2 IF NUM > 1 THEN NUM = NUM - 1 NUM = NUM * 50001 REM: Overrides QB rounding errors NUM = INT(NUM) NUM = NUM / 50000 ANGLE = ANGLE + ANGINC X = NUM * 2 * (COS(ANGLE) * RAD) + 340 Y = NUM * 2 * (SIN(ANGLE) * RAD) + 240 PSET (X, Y) NEXT C LOCATE 28,3: PRINT " " LOCATE 28,3: PRINT STR$(NUM) 50 I$ = INKEY$ IF I$ = "" THEN 50 400 KEY(9) OFF : GOTO 5 500 KEY(10) OFF: KEY(9) OFF END ============================================================== home Balloting Simple trig Logistic map The Attractor of Henon Number doubling Barnsley's Fern The Sierpinski Triangle |