Fraktale

Dywan Sierpińskiego możemy skonstruować przez podzielenie kwadratu na dziewięć mniejszych, a następnie usunięcie centralnego z nich. W ten sposób otrzymaliśmy pierwszy poziom aproksymacji dywanu Sierpińskiego. Kolejnym poziom można osiągnąć przez powtórzenie powyższej procedury dla każdego z ośmiu pozostałych kwadratów.

Po nieskończonej ilości kroków dla każdego z kwadratów, otrzymamy dwuwymiarowy fraktal zwany dywanem Sierpińskiego. Można się zastanowić, jak wyglądałaby jego trójwymiarowa wersja. Jak się okazuje, nie jest ona zbyt widowiskowa. Sześcian dzielimy na 27 mniejszych i usuwamy środkowy z nich. Z zewnątrz wygląda to więc jak zwykły sześcian. Nie chcę tu wchodzić w kolejne kroki konstrukcji a wolę opisać jak dla mnie ciekawszą figurę trójwymiarową.

Gąbkę Mengera w trzech wymiarach stworzymy przez podzielenie sześcianu na 27 sześcianów, ale usuwamy sześć sześcianów ze środka, o kształcie trójwymiarowego plusa. I procedurę powtarzamy dla każdego z podzielonych sześcianów, w nieskończoność. Poniżej grafika kostki w trzecim poziomie aproksymacji.

menger sponge lvl 3

Połączyłem gąbkę Mengera z dywanem Sierpińskiego na poniższej ilustracji. Każdą ścianę aproksymacji gąbki pokryłem teksturą aproksymacji dywanu.

Gąbka Mengera z dywanem Sierpińskiego

Obrazek ten możesz pobrać z mojego profilu na Pixabay.

Kolejną ciekawą rzeczą jest przekrój gąbki Mengera. Wyobraźmy sobie dwuwymiarowy ekran przecinający kostkę Mengera. Jeżeli przetniemy ją równolegle do powierzchni, możemy otrzymać dywan Sierpińskiego. Najciekawszy kształt otrzymamy jednak przy przekroju w poprzek, przez długą przekątną kostki. Efekt taki możesz zobaczyć w pierwszych 10 sekundach animacji:

Głeboki sen – co widzi algorytm Google do rozpoznawania obrazów?

DeapDream - Mandelbrot Set
Połączenie artystyczne zbioru Mandelbrota z algorytmem Deep Dream.

Rozpoznawanie obrazów przez komputery posunęło się w ostatnich latach  bardzo dużo do przodu. Bez problemu rozpoznają one obiekty codziennego użytku, ludzi, zwierzęta, pojazdy… To wszystko dzięki zaprogramowanemu modelowi połączeń neuronowych i odpowiednim algorytmom.

DeepDream, algorytm stworzony przez Google i udostępniony publicznie pozwala zwykłym ludziom tworzyć niesamowite obrazy. Aby działanie programu było widoczne dla człowieka, efekty wizualne wzmacnia się do absurdalnej mocy, co całkowicie zmienia postrzegany obraz.

Poniżej kilka obrazów: ja, pieseł, zbiór mandelbrota i spiderman. 😀
(Kliknij na zdjęcia aby je powiększyć)

Użycie map środowiskowych w Blenderze.

Blender tips and tricks.

Używanie map środowiska w Blenderze daje nam niezwykłe możliwości stworzenia naturalnego oświetlenia w bardzo krótkim czasie. W Google można bez problemu znaleźć wiele darmowych map. Mogą być to zarówno mapy HDRI, jak i zwyczajne .jpg i .png. Wyglądają one miej więcej tak:

Wystarczy wrzucić to jako teksturę do Blenderka, ustawić jako tło świata i można zaczynać zabawę.  Więcej szczegółów na ten temat przedstawia Gleb Alexandrov w następującym tutorialu:

Poniższy efekt uzyskałem kierując kamerę na zwykłą UV-sferę z shaderem Glossy ze 100% ostrością odbicia światła.

environment map usage

Krzywe Lissajous

Aby utworzyć krzywą Lissajous[wymawia się „lisażu”] możemy użyć dwóch wahadeł (ciężarków na sznurku), albo użyć modelu matematycznego do stworzenia komputerowej reprezentacji takich krzywych.

Eksperyment rysujący krzywe:
Kawałek sznurka przymocowujemy do stojaka. Na końcu sznurka przymocowujemy ciężarek. Do ciężarka przymocowujemy sznurek, a na jego końcu drugi ciężarek.
Odchylamy oba ciężarki od położenia równowagi, pierwszy ciężarek ma być odchylony w płaszczyźnie prostopadłej do płaszczyzny ruchu drugiego.
Ruch niższego ciężarka będzie zakreślał coś w rodzaju krzywej Lissajous.

W języku C++, napisałem program wyliczający pozycję wahadła matematycznego w zależności od czasu. Jedno wahadło zmieniało swoją pozycję w osi x, drugie w osi y. Do wyrysowania krzywych w czasie rzeczywistym, użyłem biblioteki graficznej Allegro. Złożenie ruchów dwóch wahadeł pozwalało rysować krzywe na ekranie.

Wygląd krzywych zależał od parametrów początkowych programu, amplitudy, fazy i częstotliwości drgań. Bawiąc się parametrami utworzyłem następujące obrazy:

W rezultacie uzyskałem ciekawe wzory, ale postanowiłem nieco je urozmaicić. W tym celu zmodyfikowałem nieco kod programu, uzależniając funkcyjnie (zwykłą funkcją liniową) amplitudę drgań wahadła od czasu.

Jeśli chcesz, abym dokładniej wyjaśnił coś z tego tematu  możesz zostawić komentarz. 🙂