Gra w chaos: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Skalee (dyskusja | edycje)
m wzory jako LaTeX, WP:SK
KamikazeBot (dyskusja | edycje)
→‎Zobacz też: odlinkowanie Skarbnicy Wikipedii i przekierowań do niej
Linia 55: Linia 55:


== Zobacz też ==
== Zobacz też ==
* [[dywan Sierpińskiego]],
* [[dywan Sierpińskiego]]
* [[kostka Mengera]],
* [[kostka Mengera]]
* [[Wikipedia:Skarbnica Wikipedii/Przegląd zagadnień z zakresu matematyki|przegląd zagadnień z zakresu matematyki]].


[[Kategoria:Geometria fraktalna]]
[[Kategoria:Geometria fraktalna]]

Wersja z 01:45, 18 paź 2011

Liść paproci wygenerowany przy pomocy gry w chaos

Gra w chaos to algorytm komputerowego generowania obrazów pewnych fraktali. Generuje on przybliżony obraz atraktora lub punktu stałego dowolnego systemu funkcji iterowanych.

Algorytm

Zaczynając od pewnego punktu kolejne iteracje są dane przy pomocy wzoru , gdzie jest jedną z funkcji iterowanych, wybieraną niezależnie i losowo dla każdej iteracji. Iteracje zbiegają się do punktu stałego systemu funkcji iterowanych. Jeżeli wartość początkowa należy do atraktora systemu funkcji iterowanych, wówczas wszystkie punkty również należą do tego atraktora i z prawdopodobieństwem 1 tworzą w nim zbiór gęsty.

Przykład dla trójkąta Sierpińskiego

Trójkąt Sierpińskiego

Na początku stawia się na płaszczyźnie 3 dowolne punkty (powinny być niewspółliniowe, gdyż inaczej fraktal zdegeneruje się do odcinka), po czym wybiera sobie kolejny punkt płaszczyzny, zwany punktem gry (game point). Następnie wybiera się dowolny z trzech punktów obranych na samym początku (można je oznaczyć 1, 2 i 3, po czym korzystając z generatora liczb losowych wybierać je) i stawia punkt w połowie odległości między czwartym punktem, a tym wybranym. Powtarza się ten krok, za każdym razem oznaczając punkt leżący dokładnie w połowie odległości między ostatnio postawionym, a jednym z trzech pierwszych.

Efektem algorytmu – zakładając, że punkty były losowane z mniej więcej takim samym prawdopodobieństwem – jest pewien wariant trójkąta Sierpińskiego. Jego wierzchołkami są trzy punkty wybrane na samym początku gry.

Implementacja

Poniższy przykład (w języku Python) generuje trójkąt Sierpińskiego przy użyciu gry w chaos, korzystając z biblioteki pygame.

from random import *
sqr = lambda a:a*a
import pygame
scr = pygame.display.set_mode([501, 501])

cnt = 3

pts = (
    0 + 500j,       
    500 + 500j,   
    250 + 0j,
)

colors = (
    (255, 0, 0),
    (0, 255, 0),
    (0, 0, 255)
)

ind = randrange(cnt)
pt = pts[ind]
color = colors[ind]
div = 2

for i in range(100000):
    pygame.draw.rect(scr, color, [pt.real, pt.imag, 2, 2])
    newind = randrange(cnt)
    pt = (pt + pts[newind]) / div
    color = colors[newind]
pygame.display.flip()

while True:
    key = pygame.event.poll()
    if key.type == pygame.KEYDOWN and key.key == pygame.K_ESCAPE:
        pygame.quit()
        break
    pygame.time.delay(100)

Zobacz też