Advertisement
Danila_lipatov

kop-6

Apr 15th, 2024
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.86 KB | None | 0 0
  1. # import numpy as np
  2. # import matplotlib.pyplot as plt # библиотеки
  3. # import math
  4. # # инициализиация
  5. # R = (1 + pow(1 + 4 * pow(0.2 ** 2 + 0.75 ** 2, 1 / 2),1 / 2) / 2)
  6. # print(R)
  7. # pmin, pmax, qmin, qmax = -R, R, -R, R
  8. # # пусть c = p + iq и p меняется в диапазоне от pmin до pmax, # а q меняется в диапазоне от qmin до qmax
  9. # ppoints, qpoints = 200, 200
  10. # # число точек по горизонтали и вертикали
  11. # max_iterations = 300
  12. # # максимальное количество итераций
  13. # infinity_border = 100
  14. # # если ушли на это расстояние, считаем, что ушли на бесконечность
  15. # image = np.zeros((ppoints, qpoints))
  16. # P = 800
  17. # # image — это двумерный массив, в котором будет записана наша картинка # по умолчанию он заполнен нулями
  18. # C = complex(0.31, 0.04)
  19. # # буквой j обозначается мнимая единица: чтобы Python понимал, что речь # идёт о комплексном числе, а не о переменной j, мы пишем 1j
  20. #
  21. #             z =0
  22. #             for k in range(max_iterations):
  23. #                 z = z ** 6 + c
  24. #                 # Самая Главная Формула
  25. #                 if abs(z) > infinity_border:
  26. #                     # если z достаточно большое, считаем, что последовательость # ушла на бесконечность
  27. #                     # или уйдёт
  28. #                     # можно доказать, что infinity_border можно взять равным 4
  29. #                     image[ip, iq] = 1
  30. # # находимся вне M: отметить точку как белую break
  31. # plt.xticks([])
  32. # plt.yticks([])
  33. # # выключим метки на осях
  34. # plt.imshow(-image.T, cmap='Greys')
  35. # # транспонируем картинку, чтобы оси были направлены правильно
  36. # # перед image стоит знак минус, чтобы множество Мандельброта рисовалось # чёрным цветом
  37. # plt.show()
  38. import math
  39.  
  40. import pygame
  41. import os
  42.  
  43. WHITE = (255, 255, 255)
  44. BLACK = (0, 0, 0)
  45.  
  46. # ----------  чтобы окно появлялось в верхнем левом углу ------------
  47. x = 20
  48. y = 40
  49. os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x, y)
  50. # --------------------------------------------------------------------
  51.  
  52. pygame.init()
  53.  
  54. W = 800
  55. H = 800
  56.  
  57. sc = pygame.display.set_mode((W, H))
  58. pygame.display.set_caption("Множества Жюлиа")
  59. sc.fill(WHITE)
  60.  
  61. FPS = 30  # число кадров в секунду
  62. clock = pygame.time.Clock()
  63.  
  64. while True:
  65.     for event in pygame.event.get():
  66.         if event.type == pygame.QUIT:
  67.             exit()
  68.  
  69.     pygame.display.update()
  70.     # clock.tick(FPS)
  71.     c = complex(0.31, 0.04)
  72.     P = 400                     # размер [2*P+1 x 2*P+1]
  73.     scale = P / 2               # масштабный коэффициент
  74.     n_iter = 100                # число итераций для проверки принадлежности к множеству Жюлиа
  75.     for y in range(-P, P):
  76.         for x in range(-P, P):
  77.             a = x / scale
  78.             b = y / scale
  79.             z = complex(a, b)
  80.             n = 0
  81.             for n in range(n_iter):
  82.                 z = z ** 2 + c
  83.                 if abs(z) > 2:
  84.                     break
  85.  
  86.             if n == n_iter - 1:
  87.                 r = g = b = 0
  88.             else:
  89.                 r = (n % 2) * 32 + 128
  90.                 g = (n % 4) * 64
  91.                 b = (n % 2) * 16 + 128
  92.  
  93.             pygame.draw.circle(sc, (r, g, b), (x + P, y + P), 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement