3D kerdes

Andras Tantos andras_tantos at yahoo.com
Tue Mar 23 21:16:26 CET 2004


Hali!

> > algoritmus lesz belole, ezert is hasznaljak szinte minden HW
megvalosigasban
> > a sokkal egyszerubb, jol parhuzamosithato, de szamolasigenyesebb
z-buffer
> > eljarast.
>
> Az hogy muxik? Nekem olyan otletem van, hogy nem a Z szerint kell
rendezni,
> hanem a megfigyelotol valo tavolsag alapjan. Tehat sqr(x^2+y^2+z^2)
szerint.

Baromi egyszeru: keszitesz egy tombot, amiben nem RGB ertekeket (szineket)
tarolsz, hanem tavolsagokat. Minden egyes alkalommal, amikor kiraksz egy
pontot a kepernyore, kiszamolod a tavolsagat a nezoponttol (ezt amugy is meg
kell tenned, ahhoz, hogy a kepernyo-koordinatait ismerd). Ezt a tavolsagot
osszehasonlitod a Z-buffer-ben levo ertekkel, es csak akkor rajzolod ki a
keppontot, ha a Z erteke kisebb, mint a tarolt ertek. Ebben az essetben
persze frissited a Z erteket a bufferben is. Roviden, minden egyes
kepponthoz tarolod az eddig kirajzolt legkozelebbi 3D pont tavolsagat.

> > Mire kellene?
>
> Rohejesen egyszeru feladat, egy 2 dimenzios adatsort kene abrazolni
> 2 dimenzios oszlopdiagramon, melyet tetszolegesen el lehet forditani.
> A baj az oszlopok oldallapjaival van. Ha azokat nem rajzoljuk ki,
> tokeletes. Igy viszont bizonyos dontesi szognel egy hatrebb levo magas
> oszlop eltakarja az elotte levo alacsonyabb oszlopot.

Ebben az esetben sokkal egyszerubb persze a megoldas is. Eloszor is, az
alap-sikot negyzetekre bontod, masodszor az osszes tested hasab, amik
parhuzamosak egymassal. Igazandibol nincs masra szukseged, mint, hogy az
alap-negyzeteket (vagy a kozeppontjukat) sorba rendezned a nezoponttol valo
tavolsaguk szerint. Sot, ezt megteheted 2D-ben is, csak ki kell szamolnod a
nezopont vetuletet az alapsikra. Sot, meg egyszerubb: nem is kell a
tavolsag, eleg valami, ami ugyanazt a rendezest produkalja. Azaz nem is kell
negyzetgyokot vonni, eleg a ket koordinata-kulonbseg negyzet-osszege.

Udv,
Tantos Andras
http://andras.tantos.homedns.org



More information about the Elektro mailing list