Matematyka 
 
Anaglify
MaT
Anaglify – to rysunki przygotowane w dwóch kolorach zazwyczaj czerwonym i niebieskim – dla prawego i lewego oka. Ich przygotowanie nie jest specjalnym problemem i w zupełności nam wystarczy do tego – arkusz kalkulacyjny.

Prawe i lewe oko widzą nieco inny obraz. Nie powinno nas to dziwić, bo znajdują się w różnych, choć niezbyt oddalonych miejscach. Mózg, analizując różnice w tych obrazach, odtwarza trójwymiarowe wyobrażenie tego na co patrzmy. Wrażenie trójwymiarowości możemy wytworzyć sztucznie – przygotowując i odtwarzając oddzielne obrazy dla prawego i lewego oka. Działa to przynajmniej na mniejszych odległościach, bo przy większych – raczej bazujemy na ruchu.

Istnieje wiele sposobów na odtworzenie różnych obrazów dla każdego oka. W magicznych obrazach, wrażenie przestrzenności tworzą zaburzenia powtarzających się struktur. W telewizorach 3D – obrazy pokazywane albo światłem o różnej polaryzacji, albo są na przemian, a specjalne okulary zawierają polaryzatory albo zasłaniają raz prawe a raz lewe oko. Są obrazy – które tak naprawdę są krótkimi filmami z kamery poruszającej się na boki. Jeśli obraz zawiera tylko linie, to możemy wydrukować go w dwóch kolorach i patrzeć na niego przez specjalne okulary zawierające filtry – niebieski i czerwony.

Takie obrazy – anaglify – możemy samodzielnie przygotować zatrudniając do ich narysowania dowolny popularny arkusz kalkulacyjny który pozwala na jednym wykresie XY umieścić dwie różne serie danych. Chodzi o wykres w którym program rysuje linie między punktami o podanych współrzędnych. No i możemy te współrzędne obliczyć. Ale to tego, trzeba trochę prostej matematyki.

Po pierwsze – musimy że obraz trójwymiarowy musimy zrzutować na ekran. Z punkty opisanego w przestrzeni trzema współrzędnymi – musimy zrobić taki który ma tylko dwie współrzędne. W najprostszym sposobie rzutowania – po prostu zapominamy o współrzędnej z. Większym problemem jest takie rzutowanie w kierunku punktu z którego widzimy. Tu będziemy liczyli punkt przecięcia z płaszczyzną ekranu – linii która łączy oko (punkt z którego patrzymy) z rzutowanym punktem:

 

Rzutowanie to wymaga wykonania ciągu operacji arytmetycznych na współrzędnych punktu. Operacje takie można zapisać w postaci równań, albo w postaci macierzowej, w której nie zapisujemy poszczególnych mnożeni i dodawań, zastępując je formą bardziej zwartą:

 

Aby dodać możliwość translacji sceny, a także by umożliwić rzutowanie perspektywiczne – musimy dodać czwartą współrzędną – nadać jej stałą wartość 1, a macierze przekształceń zmodyfikować do macierzy 4x4. Ta dodatkowa współrzędna ma charakter skali. By powrócić do trzech współrzędnych - będziemy przez nią każdą z nich.

W takiej sytuacji – macierz przesunięcia o wektor ma postać:

 

W tym formacie zapis rzutowania wyglądałby następująco:

 

Zapis ten, zwany zapisem macierzowym pozwala wyjść nieco dalej poza równania. Możemy na przykład skorzystać z cechy łączności mnożenia, i dodać jeszcze jedną macierz pozwalającą na transformacje sceny – czyli przekształcenie współrzędnych wierzchołków. Może to być na przykład obrót wokół osi Z:

 

Można dowieść, że mnożenie macierzy jest łączne, i najpierw pomnożyć przez siebie macierze obrotu i rzutowania.

Możemy także składać wiele przekształceń: obrotów, skalowań, ścięć. Jednak nie wszystkie przekształcenia daje się reprezentować w postaci macierzy. Teraz możemy skonstruować dowolne przekształcenie. Czas na implementację anaglifów w Excelu. I tu będziemy potrzebował trochę sprytu oraz nieco biegłości w obsłudze arkusza kalkulacyjnego. Dlatego zaprezentujemy na początek wersję „dla leniwych”, bez obliczeń na samym arkuszu.

Wykres 3D
Z tą wersją „dla leniwych” – to trochę żart, bo musimy wprowadzić dość długi ciąg liczb. A właściwie – to cztery ciągi – czyli ciągi współrzędnych poszczególnych punktów trójwymiarowej kostki. Będzie osiem grup po cztery liczby – czyli wierzchołki sześcianu we współrzędnych ekranowych. Teraz musimy narysować linie łączące te punkty. Linii będzie nieco więcej – ale możemy je „rozmnożyć” po prostu kopiując poszczególne komórki, albo się do nich referując:

 

Teraz wystarczy zaznaczyć zakres N3:Q17 – i wybrać wstawienie wykresu X-Y. Wybierając podtyp wykresu – wybierzmy ten który wygląda jak dwie przenikające się kostki. Teraz tylko chwila formatowania wykresu – tak by zlikwidować wszystkie opisy, linie siatki i ustawić czarne tło oraz kolory poszczególnych wykresów – na czerwony i niebieski. Teraz wystarczy popatrzeć na wykres przez dwa kolorowe filtry – o takich barwach – i widzimy trójwymiarową siatkę.

Obliczenia
Teraz zobaczmy skąd wziąć liczby które wprowadziliśmy. Określmy współrzędne poszczególnych wierzchołków jako trójwymiarowe współrzędne określone w układzie sceny:

 
– współrzędne punktów.

Teraz czeka nas wprowadzenie wzorów przekształcających współrzędne poszczególnych wierzchołków przez macierz przekształcenia. Wzory są tu dość złożone, ale upraszczamy sobie nieco pracę licząc jedynie współrzędne x i y, a przesunięcie dla prawego i lewego oka – realizujemy przesuwając odpowiednio współrzędną x. Wprowadzanie wzorów jest żmudne, ale teraz możemy dowolnie manipulować macierzą transformacji uzyskując różne obrazy – widoki z różnych stron.

Jednak nie możemy wartości modyfikować dowolnie. To znaczy – możemy, ale wyniki nie muszą być sensowne. Aby były – nasza macierz musi spełniać kilka warunków, które najlepiej zachować budując ja z macierzy przekształceń elementarnych – obrotów i transformacji rzutowania perspektywicznego (obróconego lub nie). Ale to już temat do samodzielnego ćwiczenia, w którym możemy zbudować kaskadę odpowiednio sparametryzowanych przekształceń.

Możemy się także pokusić o inne, bardziej skomplikowane obrazy – na przykład zespół piramid.

 
Opinie
 
Facebook
 
  
143531 wyświetleń

numer 11-12/2017
2017-12-10

Od redakcji
Aktualności
Fizyka
Historia
Kącik poezji
Literatura
Matematyka
Polityka
Psychologia
Rozmaitości
Teorie spiskowe
Zrób to sam

nowyOlimp.net na Twitterze

nowy Olimp - internetowe czasopismo naukowe dla młodzieży.
Kolegium redakcyjne: gaja@nowyolimp.net; hefajstos@nowyolimp.net