# Strange Attractors 0.0.1 # Copyright 2003 Lja MultiMedia # May be used under the GNU GPL # Algorithims from 'Fractal Programming in C' """strange.py : Draws two examples of strange attractors.""" import pygame, math Xmax = Ymax = 2.8 Xmin = Ymin = -2.8 X = Y = Z = 0 a = 2.24 b = 0.43 c = -0.65 d = -2.43 e = 1.0 max_col = 640 max_row = 480 max_iterations = 50000 white = (255, 255, 255) black = (000, 000, 000) pygame.init() screen = pygame.display.set_mode((max_col, max_row)) deltaX = max_col / (Xmax - Xmin) deltaY = max_row / (Ymax - Ymin) for j in range(2): screen.fill(white) pygame.display.update() for i in range(max_iterations): Xtemp = math.sin(a * Y) - Z * math.cos(b * X) Ytemp = Z * math.sin(c * X) - math.cos(d * Y) Z = e * math.sin(X) X = Xtemp Y = Ytemp if j: col = (Y - Xmin) * deltaX row = (Z - Ymin) * deltaY else: col = (X - Xmin) * deltaX row = (Y - Ymin) * deltaY if 0 <= col < max_col and 0 <= row < max_row: screen.set_at((col, row), black) if not (i % 100): pygame.display.update() pygame.display.update() while pygame.event.wait().type != pygame.KEYUP: pass