Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # import numpy as np
- # import matplotlib.pyplot as plt # библиотеки
- # import math
- # # инициализиация
- # R = (1 + pow(1 + 4 * pow(0.2 ** 2 + 0.75 ** 2, 1 / 2),1 / 2) / 2)
- # print(R)
- # pmin, pmax, qmin, qmax = -R, R, -R, R
- # # пусть c = p + iq и p меняется в диапазоне от pmin до pmax, # а q меняется в диапазоне от qmin до qmax
- # ppoints, qpoints = 200, 200
- # # число точек по горизонтали и вертикали
- # max_iterations = 300
- # # максимальное количество итераций
- # infinity_border = 100
- # # если ушли на это расстояние, считаем, что ушли на бесконечность
- # image = np.zeros((ppoints, qpoints))
- # P = 800
- # # image — это двумерный массив, в котором будет записана наша картинка # по умолчанию он заполнен нулями
- # C = complex(0.31, 0.04)
- # # буквой j обозначается мнимая единица: чтобы Python понимал, что речь # идёт о комплексном числе, а не о переменной j, мы пишем 1j
- #
- # z =0
- # for k in range(max_iterations):
- # z = z ** 6 + c
- # # Самая Главная Формула
- # if abs(z) > infinity_border:
- # # если z достаточно большое, считаем, что последовательость # ушла на бесконечность
- # # или уйдёт
- # # можно доказать, что infinity_border можно взять равным 4
- # image[ip, iq] = 1
- # # находимся вне M: отметить точку как белую break
- # plt.xticks([])
- # plt.yticks([])
- # # выключим метки на осях
- # plt.imshow(-image.T, cmap='Greys')
- # # транспонируем картинку, чтобы оси были направлены правильно
- # # перед image стоит знак минус, чтобы множество Мандельброта рисовалось # чёрным цветом
- # plt.show()
- import math
- import pygame
- import os
- WHITE = (255, 255, 255)
- BLACK = (0, 0, 0)
- # ---------- чтобы окно появлялось в верхнем левом углу ------------
- x = 20
- y = 40
- os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x, y)
- # --------------------------------------------------------------------
- pygame.init()
- W = 800
- H = 800
- sc = pygame.display.set_mode((W, H))
- pygame.display.set_caption("Множества Жюлиа")
- sc.fill(WHITE)
- FPS = 30 # число кадров в секунду
- clock = pygame.time.Clock()
- while True:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- exit()
- pygame.display.update()
- # clock.tick(FPS)
- c = complex(0.31, 0.04)
- P = 400 # размер [2*P+1 x 2*P+1]
- scale = P / 2 # масштабный коэффициент
- n_iter = 100 # число итераций для проверки принадлежности к множеству Жюлиа
- for y in range(-P, P):
- for x in range(-P, P):
- a = x / scale
- b = y / scale
- z = complex(a, b)
- n = 0
- for n in range(n_iter):
- z = z ** 2 + c
- if abs(z) > 2:
- break
- if n == n_iter - 1:
- r = g = b = 0
- else:
- r = (n % 2) * 32 + 128
- g = (n % 4) * 64
- b = (n % 2) * 16 + 128
- pygame.draw.circle(sc, (r, g, b), (x + P, y + P), 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement