Axonometria a 3D súradnice XYZ v Exceli
Excel je tabuľkový procesor, ktorý dokáže vypočítané údaje vykresliť pomocou 2D grafov. Pojmom 2D graf mám na mysli súradnicový systém x,y. Vizualizáciu priestorových údajov v súradniciach x,y,z pomocu 3D grafu neumožňuje ani najnovšia verzia (písané v roku 2016). To čo Excel prezentuje ako 3D graf je v skutočnosti len malá kozmetická úprava, kedy sa údaje na osi y nezobrazujú formou stĺpčeka ale ako kváder určitej výšky, ktorá práve zodpovedá hodnote y. Stále sa však jedná o graf x,y (teda v skutočnosti 2D).
Na 3D grafy by sa dal použiť nejaký iný software, avšak nie je jednoduché prepojiť výpočty z Excelu s nejakým externým programom. Často býva problém, že na danom počítači nie som administrátor a tak nie je možné inštalovať ďalšie programy. Na druhej strane Excel je dnes už štandardom na každom počítači a dokonca aj smartphone. Navyše s Excelom zvládne pracovať každý priemerný užívateľ. Vizualizácia údajov v súradniciach x,y,z sa dá spraviť pomocou dvoch jednoduchých vzorcov. Táto metóda funguje aj v každom inom tabuľkovom procesore, ktorý vykresluje graf x,y. Dokonca aj v starom Exceli z roku 1987.
3D objekty
Spomeňte si ako sa kreslí na papier 3D kocka. Nakreslí sa štvorec, ktorý má všetky strany rovnaké. Potom nakreslíme šikmé čiary, smerujúce pod uhlom 45° vpravo hore. Ich veľkosť už nie je rovnaká ako strana štvorca, ale už o niečo menšia. Pospájame voľné konce a dostali sme kocku v šikmom 3D pohľade. |
To čo ste nakreslili však nie je 3D objekt. Je to len súbor čiar v rovine, v podstate iba optický klam, ktorý sa nám pripomína 3D kocku. Aby bola táto ilúzia dôveryhodná, musíme pri kreslení postupovať podľa určitých pravidiel. Tie sme si vysvetli v predchádzajúcom odstavci. Aby sme to vysvetlili počítaču, musíme pravidlá popísať matematicky. Zobrazovanie (premietanie) 3D objektov do 2D roviny popisuje axonometria.
Axonometria – priemet do roviny obrazovky
Majme 3D pravotočivý súradnicový systém. V ňom sú v 3D priestore umiestnené body. Každý bod v priestore je určený súradnicou [ x, y, z ]. Tento 3D priestor si však chceme zobraziť na 2D obrazovke počítača. Podobne ako 3D objekt vrhá tieň na 2D rovinu. Na obrázku nižšie je 2D rovina priemetu na obrazovku vyjadrená súradnicami x’ a y’. Zamerajme sa na bod P ktorý sa z 3D priestoru premieta do 2D roviny x’, y’. Jeho priemet vytína na 2D osi x’ konkrétnu hodnotu p1 ktorú si vieme vypočítať pomocou kosínusu uhla. Podobne by sme si vedeli vypočítať aj ostatné hodnoty p1 , p2 , q1 , q2 , r2 . Tieto číselné hodnoty sa nazývajú koeficienty premietania. Dalo by sa to prirovnať k tomu, že keď meníme uhol dopadu svetla, tak sa mení aj spôsob priemetu do roviny, čím sa mení aj tvar tieňa.
Transformačné rovnice a koeficienty premietania
Teda potrebujeme premietnuť body z 3D priestoru do 2D roviny obrazovky. Na to slúžia všeobecné axonometrické transformačné rovnice premietania:
Os z je totožná s osou y’, takže koeficient r1 zanedbávame pretože r1= 0. Koeficienty premietania nemusíme počítať ručne, pretože v praxi sú pre najčastejšie používané zobrazenia už vypočítané a udávajú sa ako tabuľkové hodnoty:
typ zobrazenia | p1 | p2 | q1 | q2 | r2 |
šikmé zľava | -0,35 | -0,35 | 1 | 0 | 1 |
pôdorys | -1 | 0 | 0 | -1 | 0 |
nárys | -1 | 0 | 0 | 0 | 1 |
bokorys | 0 | 0 | 1 | 0 | 1 |
šikmé zprava | -1 | 0 | 0,35 | -0,35 | 1 |
všeobecná ax. | -0,7 | -0,35 | 0,8 | -0,2 | 0,8 |
Vyberieme si napríklad najpoužívanejší typ zobrazenia s názvom šikmé zľava. Dosadímekonkrétne koeficienty do transformačných rovníc. Niektoré výrazy v zátvorkách sú násobené nulou alebo jednotkou a tak dostávame zjednodušený tvar:
Ako to vysvetliť počítaču
Chceme napríklad nakresliť priestorový drôtený model kocky s veľkosťou strany 3 a chceme ho zobraziť v šikmom pohľade. Začneme tým, že popíšeme všetky vrcholy pomocou súradníc [ x, y, z ].
Pre názornosť som jednotlivé súradnice označil farebne. Vytvoríme si tri stĺpce v ktorých budú súradnice bodov x,y,z popisujúce polohu bodu v 3D priestore. Potom si vytvoríme ďalšie dva stĺpce, ktoré budú reprezentovať 2D priemet do x’ a y’. Prvý riadok stĺpcov x’ a y’ vyplníme pomocou vzorcov pre zjednodušené transformačné rovnice, pričom za x,y,z dosádzame hodnoty buniek z prvých troch stĺpcov. Potiahneme vzorce, aby sa prepočítali na celý rozsah. Teraz už stačí vykresliť vypočítané hodnoty zo stĺpcov x’ a y’ pomocou 2D x,y grafu. Vykreslí sa priemet 3D bodov na 2D rovinu obrazovky. Výhodou tohto riešenia je fakt, že ak niečo zmeníme v 3D súradniciach, pomocou transformačných rovníc sa prepočíta priemet 2D, ktorý sa automaticky zobrazuje v reálnom čase. Pre lepšie pochopenie si môžete stiahnuť priamo vzorový súbor kocka.xls .
Pre dokonalé zobrazenie je potrebné, aby mali obe osi grafu rovnakú mierku a aby bola plocha grafu štvorcová. Inak bude obraz sploštený. Osi vykresleného grafu x’ a y’ nepotrebujeme vidieť a tak ich môžeme neskôr z grafu odstrániť, alebo skryť. Pre nakreslenie úsečky je potrebné zadať jej počiatočný a koncový bod. Vynecháme riadok a vypíšeme body ostatných úsečiek. Po zvolení čiarového grafu sa zobrazia úsečky, ktoré vytvoria priemet kocky. Obrázok nižšie je náhľad na vzorový súbor kocka-ciary.xls .
Kváder v 3D priestore
V ďalšom príklade chceme nakresliť kváder so stranami veľkosti a,b,c. Postup je podobný, avšak súradnice nezadávam do stĺpcov x,y,z ručne, ale veľkosti strán kvádra odkazujem na podfarbené bunky, kde sa nachádzajú číselné hodnoty a,b,c. Hodnoty a,b,c môžeme meniť, ale pre väčšie pohodlie som pridal číselník. Kliknutím na šípku hore alebo dole sa zvyšujú alebo znižujú hodnoty v bunke nad číselníkom. Tieto hodnoty sa dosádzajú do 3D súradníc, odkiaľ sa po transformácii do 2D priemetu ihneď zobrazia ako vykreslený kváder.
Pre ozvláštnenie som pridal ešte výpočet, ktorý odkláňa zvislé hrany kvádru o určitý uhol. Jeden vnútorný uhol kvádru potom už nie je pravý, ale o niečo menší. Vznikne tak monoklinický hranol. Pomocou funkcie kosínus a uhla odklonu sa vypočítavajú nové súradnice x,y,z ako aj nové rozmiestnenie vrcholov hranola v priestore. Môžete si stiahnuť vzorový súbor kvader.xls, meniť hodnoty a sledovať zmeny.
Pre ešte podrobnejší popis si môžete pozrieť video tutoriál v ktorom je krok po kroku vysvetlený celý postup od zadávania súradníc, ich následný priemet do roviny x' ,y' a v závere prepočet súradníc v závislosti od premennej veľkostí strán kvádru.
Valcová skrutkovica
V nasledujúcom príklade som pridal ďalší stĺpec s názvom t. V podstate je to uhol v radiánoch, ktorý sa dosádza do parametrických rovníc cylindrickej skrutkovice. Parametrické rovnice určujú polohu x,y,z v závislosti od parametra t. Jedná sa o pohyb po kruhovej dráhe, pričom s každou otáčkou (jedna otáčka je 6,28 radiánu) sa zvyšuje hodnota súradnice z o konštantu k, ktorá sa nazýva stúpanie závitu. Konštantu je možné prepísať a pomocou absolútneho adresovania sa táto konštanta dosádza do každého výpočtu. Dostávame tak priestorovú krivku, ktorá pripomína špirálu.
Priestorové 3D súradnice skrutkovice je potrebné pretransformovať do 2D priemetu. Teraz som však použil všeobecné transformačné rovnice, pričom koeficienty premietania sa pomocou absolútneho adresovania dosádzajú zo žltých polí do výpočtov x’ y’. Koeficienty primetania p1,p2,q1,q2,r2 sa dajú prepísať, čím sa zmení typ premietania a tým pádom typ zobrazenia. Najrýchlejší spôsob je skopírovať príslušný riadok koeficientov z tabuľky priamo do žltých buniek v Exceli, čím sa dajú meniť pohľady. Tak isto sa zmena v 3D súradniciach x,y,z v reálnom čase prepočítava na 2D a ihneď zobrazuje v grafe ako priemet. Koeficienty premietania si môžete dosadiť do vzorového súboru skrutkovica.xls.
|
Kónická skrutkovica
V ďalšom príklade som vytvoril trojicu rôznych priemetov: všeobecná axonometria, bokorys a pôdorys. Pre každý typ priemetu sa podľa príslušných koeficientov transformujú súradnice do x’ a y’. Z trojice stĺpcov som si nechal vykresliť 3 grafy ktoré zobrazujú práve tieto tri pohľady. Koeficienty premietania sú v tomto príklade dosadené do vzorcov napevno.
Pre ozvláštnenie som ešte parametrické rovnice upravil tak, aby sa pri každej otáčke menila nielen výška (stúpanie závitu) ale aj vzdialenosť od stredu. Tým sa krivka navíja už nie na valcovú, ale na kónickú (kužeľovú) plochu. Koeficient kuželovitosti sa pomocou posúvníka mení a táto hodnota sa pomocou absolútneho adresovania prenáša do výpočtov 3D súradníc. Každá zmena priestorových súradníc sa po transformácii v reálnom čase zobrazí v troch pohľadoch. Vznikne tak objekt, ktorý pripomína kužeľovú pružinu. Ak neviete ako presne upraviť všeobecné transformačné rovnice na rôzne pohľady, stačí si stiahnuť vzorový sobor pre tento príklad: pruzina.xls a vložiť doň vlastné hodnoty do stĺpcov x,y,z.
3D rotácia
V predchádzajúcom príklade sme si 3D súradnice premietli do rôznych preddefinovaných 2D pohľadov pomocou piatich koeficientov premietania (prevzatých z tabuľky). V ďalšom príklade si ukážeme, ako vytvoriť priemet v ľubovoľnom pohľade a ľubovoľnom uhle natočenia α, β, γ okolo osí x,y,z. Teraz už nebudeme koeficienty premietania považovať za konštanty, ale ich číselné hodnoty budeme prepočítavať v závislosti od uhlov α, β, γ. Keďže os z v 3D priestore už nie je totožná s x' z 2D priestoru, potom ani r1 nebude rovné nule, ale inému číslu. A keďže je nenulové, nemôžeme ho zanedbať. Teraz teda uvažujeme nie s piatimi, ale so šiestimi koeficientmi premietania p1,p2,q1,q2,r1,r2, ktoré vypočítame podľa nasledujúcich vzorcov:
Ako príklad 3D objektu som vytvoril ihlan s podstavou veľkosti 2 a výškou 2, pričom stred podstavy je totožný so stredom 3D súradnicovej sústavy [ x, y, z ] a delí tak podstavu na polovicu 2/2=1.
Uhly natočenia α, β, γ sa dosádzajú do vzorcov koeficientov premietania. Excelu musíme dosadiť uhly v radiánoch. Keďže celý kruh má 360° čo zodpovedá 6,28 radiánu, potom 1 radián má 6,28/360 = 0,0174°.
Vypočítané koeficienty premietania sa pomocou absolútneho adresovania dosádzajú do všeobecných transformačných rovníc premietania. Menením uhlov pomocou posuvníkov sa teda mení aj smer pohľadu, z ktorého sa na 3D objekt pozeráme. Pre názornosť zi siahnite vzorový súbor: 3D-rotacia-ihlan.xls
Nie je to však rotácia v pravom slova zmysle, pretože 3D súradnice sa nemenia, mení sa len uhol premietania na 2D rovinu. Natočenie telesa v priestore popisújú transformačné matice pre rotáciu. Tie však v tomto prípade nebudeme potrebovať, čím sa výpočty podstatne zjednodušia.
Podrobnejší popis je na videu nižšie, v ktorom je krok po kroku vysvetlený celý postup od zadávania súradníc, prepočítavanie koeficientov premietania v závislosti na uhle priemetu do roviny x' ,y'.
GPS
Túto metódu premietania som použil aj pri zobrazení GPS súradníc. Nechal som zapnuté GPS niekoľko hodín na jednom mieste, čím som získal približne 20 tisíc bodov v priestore. Na obrázku nižšie je ich priestorové zobrazenie, ktoré vytára akoby mračno bodov. Je vidno, že určenie polohy je vždy s odchýlkou pár metrov od stredovej hodnoty. Viac o vyhodnotení tohto experimentu sa dočítate v samostatnom článku Presnosť GPS.
Súvisiace články:
Výpočet výšky budovy podľa tieňa