Atenție vă rog! Acest site nu este actualizat. Noua versiune: shatalov.su
-
Lecții suplimentare
- Transformarea spațiilor de coordonate. Du-te.
- Cameră virtuală și proiecție în perspectivă. Du-te.
Înainte de a începe să desenați grafice pe ecran, trebuie să luați în considerare modul în care obiectele grafice sunt prezentate din interior.
DirectX utilizează mai multe spații de coordonate.
Lumea coordonează spațiul (spațiul mondial)
În spațiul de coordonate mondial, sunt descrise toate obiectele grafice. În acest spațiu puteți vedea "întreaga lume virtuală". Acest spațiu este, de asemenea, numit global sau universal.
De ce nu ne putem limita la un singur spațiu - spațiul mondial? Faptul este că utilizarea mai multor spații simplifică foarte mult viața.
În sistemul solar, pentru confortul de a calcula orbitele planetelor, se utilizează un sistem de coordonate heliocentrice (centrul este Soarele). Dar traiectoria mișcării Lunii în jurul Pământului este mult mai ușor de imaginat nu în sistemul heliocentric, ci în sistemul de coordonate geocentric (de la centru la pământ). Aici vedem un exemplu de utilizare a două sisteme de coordonate - lumea și obiectul. Este la fel în jocurile pe calculator.
Aici merită să ne amintim că locația este relativă. Localizarea obiectului poate fi descrisă în diferite spații de coordonate: traiectoria Lunii poate fi prezentată atât în sistemul geocentric, cât și în cel heliocentric, dar în primul este mai ușor de făcut.
Luați în considerare o imagine pe care este descris spațiul de coordonare mondial. În spațiu există un obiect - un triunghi și o cameră care îndreaptă spre triunghi. Atât camera, cât și triunghiul au propriile spații de coordonate.
A doua imagine prezintă aceeași scenă, numai vizualizarea de sus. Aici triunghiul este reprezentat ca o linie. Toate imaginile ulterioare vor utiliza fie vederea laterală (axa x, y), fie vizualizarea de sus (axele x, z).
Obiect spațiu
În spațiul de coordonate al obiectului este construit modelul (obiectul).
Începutul spațiului obiect trebuie să fie aranjat astfel încât să fie mai convenabil să creați un obiect. Uneori, începutul spațiului obiect coincide cu centrul de masă al modelului.
În imagine puteți vedea spațiul triunghiului descris de axele x1, y1.
Dacă obiectul este complex, atunci sunt introduse spații suplimentare - pentru a simplifica animația. Dar suntem încă departe.
Spațiu inerțial (spațiu inerțial)
Vom introduce un spațiu suplimentar de coordonate - spațiul inerțial. Nu este folosit în realitate, dar ne permite să simplificăm percepția asupra modului în care interacționează spațiile de coordonate. Să ne uităm la imagine:
Aici sunt prezentate: spațiile (x1, y1) și inerțial (x2, y2).
Direcția axelor spațiului inerțial coincide cu direcția axelor spațiului mondial, iar originea spațiului inerțial coincide cu originea coordonatelor spațiului obiect.
Pentru a "obține" din spațiul obiectului din spațiul inerțial, trebuie să rotiți. Și din spațiul inerțial este foarte ușor să intri în lume. Acest lucru se face prin mișcare. Spațiul inerțial permite separarea acestor două operații (rotație și deplasare).
Camera coordonează spațiul
O cameră este o reprezentare a unui utilizator într-o lume virtuală. Prin intermediul camerei, jucătorul vede o mică parte din spațiul mondial.
Camera are o direcție - în ce direcție se află utilizatorul și câmpul (sectorul) din vedere: vertical și orizontal.
Direcția camerei (vizualizarea jucătorului) coincide întotdeauna cu direcția pozitivă a axei z în spațiul de coordonate al camerei.
Determinarea spațiilor de coordonate
Am aflat ce spații există în DirectX: lumea, obiectul (fiecare obiect are propriul său) și spațiul camerei. Acum trebuie să aflăm cum interacționează aceste spații.
Fiecare spațiu are axe, iar originea coordonatelor este punctul de intersecție al axelor (denumit punct O). Originea este locația spațiului de coordonate. De exemplu: originea spațiului camerei este locația (coordonatele) acestui spațiu în spațiul mondial. Axele specifică orientarea spațiului.
Transformarea spațiilor de coordonate
Cunoscând coordonatele spațiului obiect, puteți exprima orice punct al acestui obiect în coordonatele lumii și invers, orice punct al coordonatelor lumii poate fi exprimat în coordonatele spațiului obiect.
Să examinăm o situație în care coordonatele obiectului coincid cu inerție. Să presupunem că avem un triunghi în spațiul obiect (0,0) (1,1) (1,0). Coordonatele acestui spațiu din lume sunt (23, 12). Pentru a converti punctul de triunghi în lumea coordonate este suficientă pentru a stabili coordonatele fiecărui punct cu coordonatele spațiului obiect (23.12) (24.13) (24.12) - Aici este triunghiul în lumea coordonate. Pur și simplu, nu?
Pentru a converti coordonatele unui punct de la lume la obiect, trebuie să scăpați coordonatele spațiului obiect de la coordonatele acestui punct.
Dacă coordonatele obiectului nu coincid cu coordonatele inerțiale, mai întâi trebuie să rotiți, restul fără omisiuni.
Notă importantă: atunci când convertiți spațiile coordonate, coordonatele obiectelor nu se mișcă. Exprimăm pur și simplu locația obiectelor în diferite spații de coordonate.
Arkanoid
aparat foto
celulele
sprite