home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 36 / Flop_Magazin_36_1995_04_Raster_cs_Side_B.atr / stereo.cap < prev    next >
Text File  |  2023-02-26  |  7KB  |  2 lines

  1.      Stereometrie a perspektiva¢     --------------------------¢¢     Jan Walla¢¢¢     V minul`ch FLOPech jsme se zab`vali problematikou zobrazov*n) prostorov`ch obr*zk+. Cht%l bych se k tomuto t[matu vr*tit, i kdy( pon%kud z jin[ho ]hlu.¢     Nep+jde mi nyn) ani tak o to, aby byl na monitoru vid%t 3D obraz, p+jde mi hlavn% o to, jak zobrazit 3D objekty, jak je "rozpl*cnout" na dvojrozm%rn[m monitoru.¢     Jde o "objev" zvan` perspektiva. O co jde? V&ichni jste se s n) setkali. Jde o v%rohodn[ zobrazen) skute'nosti. P@edstavte si, (e se n%kam postav)te a na n%co se pod)v*te: potom si p@ed sebe d*te sklen%nou desku ╱nebo mal)@sk[ pl*tno$ a vid%nou skute'nost p@esn% obt*hnete. Kdykoliv se na tento obraz pot[ pod)v*te - uvid)te obraz skute'nosti z p+vodn)ho m)sta. Nejtypi't%j&)m p@)kladem perspektivn)ho zobrazen) je oby'ejn* fotografie.¢     Co to m* ale spole'n[ho s po')ta'ovou grafikou? Jist% zn*te hry typu EIDOLON na ATARI, 'i hry WOLF, DOOM, DESCENT 'i HERETIC na PC. V t%chto hr*ch se pohybujete jakoby re*ln`m prost@ed)m, popsan`m prostorov`mi sou@adnicemi. Nyn) p+jde o to, jak p@epo')tat dan[ trojrozm%rn[ sou@adnice na dvojrozm%rn[ - pro povrch obrazovky, kter[ bude slou(it jako "okno do sv%ta". Rychlost na&eho po')ta'e ╱nav)c v BASICu 'i TBASICu$ rozhodn% nesta') na animace typu DOOM. P+jde tu o vypo')t*n) statick[ho obrazu.¢     Hlavn)m t[matem je tedy to, jak prom)tnout prostorov` objekt, popsan` t@emi sou@adnicemi x, y a z ╱respektive objekt tvo@en` v)ce body o v)ce trojic)ch sou@adnic$ na rovinu. Zavrhn%me hned z po'*tku v&echny pravo]hl[ a jin[ pr+m%ty a v%nujme se rovnou perspektivn)mu zobrazen).¢¢     Dosti v&ak teorie, pop)&u v*m nyn) kr*tk[ ╱T$BASIC progr*mky STEREO?.BAS. Pokus)m se nezab)hat p@)li& do matematick`ch slo(itost). Abyste mohli postup vyu()vat, je pro V*s d+le(it%j&) p@esn% pochopit CO chci ud%lat ne( JAK to ud%l*m.¢     Nejd@)ve si mus)me definovat podm)nky. P@edstavte si n%jak` 3D sou@adn` syst[m, t@i osy x, y a z tak, (e:¢Osa x vede zep@edu dozadu, kladn* '*st je za V*mi.¢Osa y vede zleva doprava, kladn* '*st je vpravo.¢Osa z vede zdola nahoru, kladn* '*st je naho@e.¢¢     V tomto sou@adn[m syst[mu si v libovoln`ch jednotk*ch zvol)me n%kolik bod+ o sou@adnic)ch x, y a z ╱viz 10 bod+ v posledn)ch DATA @*dc)ch na konci obou program+$.¢     Nyn) si mus)me je&t% zvolit odkud se na objekt budeme d)vat. Oko m* v tomto p@)pad% 6 stup+ volnosti, co( znamen*, (e jeho polohu a sm%r pohledu m+(eme popsat 6 ')sly. Prvn) t@i jsou norm*ln) sou@adnice pozorovatele, dal&) t@i jsou nejl[pe t@i ]hly oto'en) pozorovatele okolo t@) os.¢     Tady ov&em nast*v* pot)(. Z*le() toti( na tom, v jak[m po@ad) budeme okolo os ot*'et. Oto'en) nap@. o 10 stup+ okolo x, o 20 stup+ okolo y a o 30 stup+ okolo z nen) tot[( jako oto'en) o 20 stup+ okolo y, o 30 stup+ okolo z a o 10 stup+ okolo x!!¢     Zvolme si tedy nap@)klad:¢     Z*kladn) pohled bude od ⇩x k -x, ⇩y bude vpravo, -y vlevo, ⇩z naho@e a -z dole.¢     D*le si zvolme ot*'en) nejd@)ve okolo osy z ╱ot*'en) hlavou doleva a doprava - vrt%n) hlavou "NE"$ o ]hel fi tak, (e oto'en) doprava odpov)d* kladn[ v`chylce.¢     Potom budeme ot*'et okolo osy y ╱k`v*n) hlavou "ANO"$ o ]hel ro tak, (e kladn* v`chylka bude dol+.¢     Nakonec oto')me hlavu okolo x ╱polo(en) hlavy na lev[ 'i prav[ rameno$ o ]hel psi tak, (e kladn* v`chylka bude na prav[ rameno.¢¢     JENəE ouha. Vy oto')te hlavu o ]hel fi okolo z; t@eba oto')te hlavu doprava o 30 stup+. D*le m+(ete pokra'ovat dvoj)m zp+sobem:¢¢1$ za')t ot*'et o dal&) ]hel ro okolo STAR❎ osy y - osy jsou NEM
  2. NN❎, pevn% fixovan[ k pozorovan[mu objektu, a tedy ot*'en) okolo y ji( NEN     "sklopen) zraku" nahoru a dol+. Nebo¢2$ @)ci si, (e s hlavou se OTO⇨IL I sou@adn` SYST❎M ╱syst[m je fixov*n k pozorovateli$ a oto'it hlavu okolo NOV❎ osy y - osy vznikl[ OTO⇨EN    M star[ osy y okolo z.¢¢Tot[( samoz@ejm% p@i ot*'en) okolo x.¢¢     Oba syst[my maj) sv[ v`hody a nev`hody. Prvn) syst[m z@ejm% pou()v* virtu*ln) realita ╱i o n) byl ji( ve FLOPu 'l*nek$, kdy sn)m*me ABSOLUTN     sou@adnice pozorovatele v prostoru ╱STEREO1.BAS$.¢     Druh` syst[m je mo(n* pon%kud logi't%j&) a v)ce se bl)() p+vodn)mu zad*n) ot*'en) hlavy nejprve doleva - doprava, nahoru - dol+ a na lev[ - prav[ rameno. P@edpokl*d*m, (e druh` syst[m v*m bude asi u(ite'n%j&) ╱STEREO2.BAS$.¢¢     Oba programy maj) podobnou strukturu. Nejd@)ve se z DATA @*dk+ na'te po'et zobrazovan`ch bod+, d*le sou@adnice pozorovatele XP, YP, ZP, FI, RO, PSI a zv%t&en) K. To je definov*no jako kone'n* vzd*lenost Va&eho oka od obrazovky a je ud*v*na v pixelech ╱bodech$ obrazovky v gr. 8 ╱obrazovka m* rozm%ry 320x192 bod+$. N*sleduje dimenzace pol) X╱$, Y╱$, Z╱$ pro "POCET" bod+ a rezervace XF╱$ a YF╱$ pro jejich v`sledn[ "obrazovkov[" sou@adnice a na'ten) prostorov`ch sou@adnic.¢¢     T)m m*me definovan[ po'*te'n) podm)nky. U varianty 1 m*me mo(nost pro nejkomplikovan%j&) v`po'et ╱oto'en)$ p@edpo')tat si koeficienty matice A11..A33, u verze 2 si alespo p@edpo')t*me siny a cosiny ]hl+¢¢!!!  T%mto operac)m NEMUS    TE bezpodm)ne'n% rozum%t, popisuji je tu jen velmi stru'n% pro ]plnost. Pokud n%koho zaj)m* matematick` postup, jak doj)t k v programech uveden`m vztah+m, a④ se na m% obr*t).¢¢     Vlastn) p@epo'et se d%je v cyklu FOR I=1 TO POCET ... NEXT I¢     Nejprve se vypo')taj) pro ka(d` bod sou@adnice XT, YT a ZT - sou@adn` syst[m se "posune" tak, aby bylo oko v po'*tku.¢     D*le se u varianty 1 vypo')taj) pomoc) t@) rovnic a koeficient+ A11..A33 sou@adnice X, Y a Z - sou@adn` syst[m se oto') okolo t@) os tak, (e se d)v*me ve sm%ru osy X... tak jak je definov*na standartn) situace.¢     U varianty 2 tento krok mus)me d%lat nat@ikr*t za pomoci prom%nn`ch XX1, YY1, ZZ1, XX2, YY2 a ZZ2. V`sledkem jsou op%t sou@adnice X, Y a Z za standartn)ch podm)nek.¢     Na z*v%r se je&t% pomoc) podobnosti troj]heln)k+ kone'n% prom)tnou standardizovan[ sou@adnice na monitor ╱XF╱I$, YF╱I$$. Ty se je&t% pro kontrolu vyp)&) na obrazovce.¢¢     To je cel[. Dal&) '*st programu od @*dku 380, resp. 400 je jen kr*tk* uk*zka, jak dan[ body vykreslit ╱po stisku kl*vesy START$. Na tomto m)st% m+(e b`t V*& ╱rozs*hl`$ program, jak a kde p@edpo')tan[ sou@adnice zobrazit.¢     Te⇦ trochu fantazie: Dovedu si na tomto m)st% p@edstavit nap@. program kter` zajist) v`po'et DVOU obr*zk+, jeden ka(d` pro jedno oko a zobrazit je sou'asn%, bu⇦ ka(d` na svou polovinu obrazovky 'i zobrazit je 'erven% a mod@e "p@es sebe" tak aby p@i pohledu p@es barevn[ br`le vznikl opravdu skute'n` vjem prostorov[ho obr*zku. Mo(n* (e se k tomuto t[matu je&t% n%kdy dostanu.¢¢     Shrnut):¢¢     V zadan[m sou@adn[m syst[mu:¢Osa x vede zep@edu dozadu, kladn* '*st je za V*mi.¢Osa y vede zleva doprava, kladn* '*st je vpravo.¢Osa z vede zdola nahoru, kladn* '*st je naho@e.¢Zvol)te sou@adnice n%kolika bod+.¢¢     Do DATA @*dk+ zad*te po'et bod+, sou@adnice XP, YP, ZP, d*le ]hly ╱ve stupn)ch$ FI, RO a PSI ╱definovan[ podle dan[ varianty$ a nakonec vzd*lenost oka od obrazovky v pixelech.¢     D*le u( jen zad*te trojice sou@adnic zvolen`ch bod+.¢¢     Po prob%hnut) cyklu najdete v pol)ch XF a YF vypo')t*ny p@)mo obrazovkov[ sou@adnice ╱pro PLOT a DRAWTO$.¢¢     Nyn) si pomoc) vlastn)ho programu vlastn)m zp+sobem ╱nahrazen)m '*sti programu or @*dku 380, resp 400$ vykresl)te obr*zek na monitoru. Je ale nutn[ o&et@it velikosti sou@adnic XF╱I$ a YF╱I$, aby m%ly re*lnou hodnotu a necht%ly b`t vykreslov*ny mimo monitor.¢