ZZZZZZZZZZZ
                                       ZZZ
                                     ZZZ
                                   ZZZ
                                 ZZZ
                                ZZZZZZZZZZZ
                                     -
                                 Buffering


          Ten,   kdo   se   někdy   pokoušel   dělat   počítačovou  3D
          grafiku,  jistě narazil na problém  jak zajistit, aby se dvě
          tělesa,  která  se  navzájem  prolínají,  zobrazila alespoň
          trochu  slušně.  Někteří  se tento problém snaží řešit čistě
          matematicky  a  počítají   průnik   polygonů,   z  toho  pak
          udělají   polygony  nové  a  ty  potom  zobrazí  klasickými
          metodami.  Tato  metoda  je sice teoreticky použitelná, je s
          tím   trochu  moc   práce.   Nejjednodušším   způsobem,  jak
          dosáhnout  korektního  zobrazení  dvou  a   více navzájem se
          prolínajících objektů je Z-BUFFERING.
          Z-Buffering  spočívá  v  tom,  že  si v dvojrozměrném poli o
          rozmerech schodných s rozměry obrazovky souřadnici Z každého
          zobrazovaného   bodu  a  když  zobrazujeme  bod  [X,Y],  tak
          porovnáme   Z  zapisovaného  bodu  s  Z  zapsanym  dříve  do
          Z-Bufferu na souřadnice [X,Y] a když je Z zobrazovaného bodu
          menší  nebo rovno (to znamená, že je blíž než  bod zobrazený
          minule   na  tyto  souřadnice),  tak  bod  vykreslíme  a  do
          Z-Bufferu zapíšeme na jeho souřadnice hodnotu Z.
          Tak to byla teorie a teď trochu praxe.
          Předpokládejme  polygon A[Xa,Ya,Za] B[Xb,Yb,Zb] C[Xc,Yc,Zc] .
          Když  budeme  body  transformovat  z  3D  do  2D třeba podle
          rovnic:

                                  X=(X*256)/Z
                                  Y=(Y*256)/Z

          Můžeme odvodit, že se bude hodnota 1/Z měnit s přírůstkem 2D
          souřadnic  lineárně.  Z  toho  plyne, že si stačí na začátku
          zpočítat  2D  souřadnice  bodů polygonu, jednu hodnotu 1/Z a
          krok,  kterym se bude měnit tato hodnota s přírůstkem 2D X a
          Y. Přírůstky spočítáme například podle rovnic:

                             KrokX=(Xb-Xc)/(Zb-Zc)
                             KrokY=(Yc-Ya)/(Zc-Za)

          Potom stačí jen při vykreslování polygonu spočítat:

                            Zi=(1/Z)+X*KrokX+Y*KrokY

          (Kde X a Y sou 2D souřadnice při vyplňování polygonu)
          Toto  Zi pak porovnávat a ukládat do Z-Bufferu výše uvedeným
          postupem.
          Ještě  jedna  poznámka  na závěr: nezapomeňte před počítáním
          každého  frejmu  (pro  angličtináře:  je  to od slova FRAME)
          naplnit Z=Buffer maximálními hodnotami.

                            A jak to potom vypadá? 

          Hodně úspěchů při psaní Z=Bufferu Vám přeje:

                                     Mystik
                             (mystik@bbs.infima.cz)


            výheň