Неизвестные закономерности в «Особом» МандельбротеPython

Программы на Python
Anonymous
Неизвестные закономерности в «Особом» Мандельброте

Сообщение Anonymous »

Поигравшись с некоторыми методами генерации фракталов, я наткнулся на кое-что, что мне кажется весьма интересным, поэтому позвольте мне рассказать вам всю историю:
Сейчас я играю много работал с фракталами (особенно со знаменитым Мандельбротом и его набором Джулии), и после того, как мне надоел простой, стандартный Мандельброт, я подумал про себя:
"А что, если вместо простого создания Мандельброта или набор Джулии, я должен был сделать следующее: создать простое изображение, пройтись по каждому пикселю, масштабировать положение пикселя до [-2 2] по обеим осям, как это было бы для обычного Мандельброта, но вместо того, чтобы просто повторять это; в качестве комплексного числа я создаю набор Julia с низким разрешением (16 на 16, чтобы получить максимум 256, поскольку я использую RGB-спектр), используя его в качестве c-компонента, а затем возвращаюсь в свое изображение и раскрашиваю этот пиксель на основе от того, сколько пикселей содержится в соответствующем наборе Джулии?"
Итак, чтобы уточнить:

Код: Выделить всё

Create plain Image
for each pixel in that Image:
Scale pixel coordinates to the Mandelbrot range and convert to a complex number
Create a Julia Set using the complex number as the C-Component
Count the pixels that are inside the Julia Set
Color the pixel based on that number of pixels (in the main image)
После написания простого кода Python для этого

Код: Выделить всё

from PIL import Image
img = Image.new("RGB", (1024, 1024))

def scale(x, y, mx, my):
return complex(x/mx*4-2, y/my*4-2)

def iterate_julia(z, c):
for i in range(1000):
z = z*z+c
if z.real > 4:
return False
return True

def julia_size(c):
size = 0
for x in range(8):
for y in range(16):
size += iterate_julia(scale(x, y, 19, 19), c)*2
return size

for x in range(img.width):
for y in range(int(img.height/2)):
c = julia_size(scale(x, y, img.height, img.width))
img.putpixel((x, y), (c, c, c))
img.putpixel((x, int(img.height-y-1)), (c, c, c))

img.show()
Я получил следующее изображение:
(https://i.sstatic.net/kEXztGxb.png)
Это немного тускло, поэтому я просто добавил порог, чтобы пиксель сразу же окрашивался в белый цвет, если в соответствующем наборе Джулии был какой-либо пиксель, в противном случае он был бы окрашен в черный цвет, что дало мне следующее изображение:
(https://i.sstatic.net/IYN6iIiW.png)
Поэтому везде, где на этом изображении есть белый пиксель, соответствующий набор Джулии не пуст. . Я не уверен, что это будет каким-то образом полезно, но мне все равно показалось это интересным, поэтому я хотел поделиться этим. Также мне кажется, что узоры на первом изображении выглядят довольно аккуратно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... mandelbrot

Вернуться в «Python»