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.