• Vektorová grafika •

      Vše co potřebujete k pochopení  principu vektorové grafiky znát jsou
     dvě věci:  bod o třech souřadnicích  a tzv. face složený  vždy ze tří
     bodů. Každý složitější objekt se dá  totiž rozložit právě na tyto dvě
     elementarní  složky. Počet  plošek (face)  je vždy  větší nebo  roven
     počtu  bodů.  Jedna  ploška  může  být  připojena  na dva body, které
     vlastní již  jiná ploška. Nemusíme  proto vytvářet pro  každou plošku
     tři body  zvlášť. V praxi si  v našem programu deklarujeme  dvě pole.
     Jedno bude  obsahovat body o  souřadnicích [X,Y,Z] a  druhé pole také
     o třech hodnotách na jednu položku,  jež vyjadřují indexy bodů, které
     dané  plošce  náleží.  Potom   je  nezbytné  si  vygenerovat  tabulku
     základních hodnot funkcí  sin() a cos() a uložit  ji do dalšího pole.
     Před samotným vykreslením se musí provédst tyto výpočty:

      • Rotace bodu o souřadnicích [X,Y,Z] •

     o úhel {a,b,c} pro X:a, Y:b, Z:c

     Y1 = Y*cos(a) + Z*sin(a)
     Z1 = -Y*sin(a) + Z*cos(a)
     X1 = X*cos(b) + Z1*sin(b)
     ---------------------------
     nZ = -X*sin(b) + Z1*cos(b)
     nX = X1*cos(c) + Y1*sin(c)
     nY = -X1*sin(c) + Y1*cos(c)

     Výsledný bod má pak souřadnice: [nX,nY,nZ]

     • Přepočet perspektivy bodu v prostoru •

     [X,Y,Z] , kde ShiftFactor je míra zkreslení
     a ZDelta relativní prodloužení na ose z

     nX = (X SHL ShiftFactor)/(Z+ZDelta)
     nY = (Y SHL ShiftFactor)/(Z+ZDelta)

     Výsledný bod má pak souřadnice: [nX,nY,Z]

     Tento  výpočet  provedem  pro  každý  bod  zvlášť.  A na závěr musíme
     vypočíst prioritu  jednotlivých plošek pro kreslení  na obrazovku. Do
     dalšího  volného jednorozměrného  pole o  stejném počtu  položek jako
     pole  plošek postupně  zapíšeme součty  tří hodnot  Z souřadnice bodů
     náležících aktuální  plošce a výsledné pole  seřadíme podle velikosti
     jednotlivých  součtů.  Následuje  kreslení  plošek:  chce  to  velice
     rychlou   rutinku   na   vykreslování   obecných   trojúhelníků  100%
     v assembleru (pro zájemce tu jednu  mám ->  trojúhelník  ). Nastavíme
     paletu  na kontrastní  hodnoty  například  bílé. Do  předem alokované
     virtuální   obrazovky  kreslíme   trojúhelníky  od   nejvzdálenějšího
     k nejbižsímu  dle seřazeného  pole plošek.  Každému z  nich přidělíme
     postupně  barvu taktéž  podle  pole  plošek. Výsledek  zkopírujeme do
     videopaměti a počkáme na paprsek. Před každým dalším obrázkem nesmíme
     zapomenout  vyplnit virtuální  orazovku barvou  pozadí. Pokud  budeme
     měnit  jednotlivé úhly  a,b,c  nebo  měnit souřednice  těžiště tělěsa
     X,Y,Z měli bychom vidět rotující a pohybující se objekt.

     Pokud se vám to podaří naprogramovat,  pak mi jistě dáte z pravdu, že
     monohem těžší než programování,  je samotné definování objektů. Ručně
     je to  totálně nemožné, proto  je nezbytné využít  nějakého programu,
     který  umí  definovat  objekty  user-friendly  cestou  jako  třeba 3D
     Studio. Jestli takový program nemáte, musíte si ho holt vyrobit sami.
     Jestliže pochopíte základ, můžete  své vektorové engine dále rozvíjet
     a upravovat  např.  pro  různou   barevnost  plošek  nebo  jiný  styl
     stínovaní než je tzv. flat uvedený výše. Ať se vám to daří ! Výsledek
     stojí oravdu za to !

                                                        ReDox


            výheň