Documente Academic
Documente Profesional
Documente Cultură
y
(b, d)
E xe
(pr , pt )
M
P
(a, c) (pl , pb )
ye
O x
Dorim să vizualizăm obiectul 2D din dreptunghiul lumii reale, [a, b] × [c, d], pe un viewport
pe ecranul raportat la sistemul său stâng de coordonate. Viewportul este domeniul dreptunghi-
ular de pe ecran ce are vârfurile diagonal opuse (pl , pb ), (pr , pt ), unde pl este prescurtarea de
la pixel left, pr -pixel right, pt -pixel top şi pb -pixel bottom). Vizualizarea
se efectuează ”mapând”, adică aplicând fereastra lumii reale pe viewportul de pe ecran, mai
precis aplicând fiecare punct M din figura inclusă ı̂n fereastra lumii reale ı̂ntr-un pixel, P , din
viewportul de pe ecran (Fig.8.1).
Ecranul unui PC sau al device-ului de ieşire pentru un sistem grafic este o matrice de pixeli. Pixel-ul (pres-
curtare de la picture element) este unitatea de adresare pe ecran.
Matricea de pixeli are indicii (i, j) = (xe , ye ) ı̂n mulţimea
{0, 1, 2, . . . , pixxM } × {0, 1, 2, . . . , pixyM }
1
2 Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007
Numărul de pixeli pe orizontală şi al celor de pe verticală defineşte rezoluţia ecranului. În notaţia de mai sus
rezoluţia este pixxM × pixyM . În acelaşi timp indicii de poziţie ı̂n matricea de pixeli, (xe , ye ), reprezintă şi
poziţia pixelului ı̂n sistemul de coordonate al ecranului.
Pentru a ı̂ntelege mai bine problema pe care o abordăm considerăm un exemplu simplu de
grafică 2D:
Dorim să desenăm pe ecran graficul funcţiei f (x) = x2 sin x, x ∈ [−1, 2]. În acest scop
divizăm intervalul de definiţie [−1, 2] ı̂n N = 60 subintervale adiacente de lungimi egale. Pasul
(distanţa dintre două puncte de diviziune consecutive) este h =lungimea intervalului/N =3/60 =
0.05. Notăm cu xi = −1 + i ∗ h, i = 0, 60 punctele de diviziune. Calculăm valorile funcţiei
ı̂n xi şi obţinem yi = x2i sin xi . În urma discretizării graficul este reprezentat de multimea de
puncte (norul de puncte de mai sus) (xi , yi ), i = 0, 60 (Fig.8.2).
−1
−1 0 1 2
Evident că coordonatele (xi , yi ) sunt coordonate relativ la sistemul de axe ortogonale xOy
(al lumii reale). Fereastă minimă ı̂n care intră aceste puncte are parametrii a = −1, b = 2, c =
min{yi , i = 1, N }, d = max{yi , i = 1, N }. Prin urmare graficul discretizat intră ı̂n fereastra
[a, b] × [c, d]. Dorim să desenem graficul pe ecran ı̂n viewportul definit de pl = 100, pb = 400,
pt = 50, pb = 375. Pentru a vizualiza graficul, mapăm punctele (xi , yi ) pe ecran, adică pe
pixelii ((xe )i , (ye )i ), i = 0, N şi apoi unim cu un segment de dreaptă doi pixeli consecutivi
((xe )i , (ye )i ), ((xe )i+1 , (ye )i+1 ), i = 0, N − 1. Pentru a efectua maparea fereastră–viewport
introducem câteva noţiuni şi rezultate auxiliare:
şi cu x′ O′ y ′ |z ′ sistemul asociat celui de-al doilea reper, remarcăm că axele corespunzătoare din
cele două repere sunt paralele, având aceeaşi direcţie (de exemplu Ox şi O′ x′ au direcţia şi
sensul lui e1 , etc).
Problema care se pune atunci când avem două repere este de a determina relaţia dintre
coordonatele (x, y|, z) ale unui punct M ı̂n primul reper şi coordonatele (x′ , y ′ |z ′ ) ale aceluiaşi
punct ı̂n reperul al doilea.
y′
y M
O′
x′
O x
Fig.8.3: Două sisteme de axe otogonale drepte obţinute unul din celălalt prin translaţie.
Propoziţia 8.1.1 Dacă originea O′ a reperului R′ obţinut prin translaţie are coordonatele
(x0 , y0 |, z0 ) relativ la reperul iniţial R şi un punct arbitrar M are coordonatele (x, y|, z) relativ
la reperul R şi respectiv coordonatele (x′ , y ′ |z ′ ) relativ la reperul R′ , atunci relaţiile dintre cele
două tipuri de coordonate sunt:
x ′ = x − x0
y ′ = y − y0 | (8.1)
′
z = z − z0
Demonstraţie: Din regula lui Chasles (Fig.8.3 pentru cazul 2D) avem că
−−→′ −− → −−→
OO + O′ M = OM
Din definiţia coordonatelor relativ la un reper (vezi cursul precedent) rezultă că:
−−→′ −−→ −−→
OO = x0 e1 + y0 e2 | + z0 e3 , O′ M = x′ e1 + y ′ e2 | + z ′ e3 , OM = xe1 + ye2 | + ze3
Înlocuind ı̂n relaţia Chasles de mai sus rezultă că:
x = x′ + x0 x ′ = x − x0
y = y ′ + y0 | sau y ′ = y − y0 |
z = z ′ + z0 z ′ = z − z0
4 Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007
Pentru a mapa o fereastră raportată la un sistem drept pe o fereastră (viewport) pe ecranul unui
PC, ce este raportat la un reper stâng avem nevoie de:
Propoziţia 8.1.2 Dacă R = (E; e1 , −e2 ) este reperul ortonormat stâng asociat ecranului, de
axe Exe ye (xe a se citi x-ecran, sau abscisa pe ecran şi analog ye ), iar O este un punct pe ecran
de coordonate (x0e , ye0 ), iar R′ = (O, e1 , e2 ) este un reper drept de axe Oxy (Fig.8.4), atunci
dacă punctul P are coordonatele (x, y) relativ la sistemul drept Oxy şi coordonatele (xe , ye )
relativ la sistemul stâng de axe Exe ye , relaţiile dintre cele două seturi de coordonate ale lui P
sunt:
xe = x + x0e
(8.2)
ye = −y + ye0
e1
E xe
y
−e2
P (xe , ye )
e2 (x, y)
O e1 x
ye
unde:
−−→ −→ −→
EO = x0e e1 + ye0 (−e2 ), OP = xe1 + ye2 , EP = xe e1 + ye (−e2 )
şi ı̂nlocuind obţinem:
xe = x + x0e
(8.3)
ye = −y + ye0
şi deci:
d−c
ϕa,b;c,d (x) = c + (x − a), ∀ x ∈ [a, b] (8.4)
b−a
F x′
O x
y
y′
P (X ′ , Y ′ )
F x′
O x
Fig.8.5: Efectul transformării S asupra domeniului dreptunghiular [0, b − a] × [0, d − c] este domeniul
dreptunghiular având dimensiunile viewportului de pe ecran (cel cu frontiera colorată cu roşu)
.
E
xe
y′
P (X ′ , Y ′ )
(xe , ye )
F (pl , pb ) x′
ye
Ţinând acum cont ı̂n (8.7) de relaţiile (8.6), (8.5) obţinem relaţiile dintre coordonatele (x, y) ale
unui punct M din fereastra [a, b] × [c, d] şi coordonatele ecran (xe , ye ) ale ”mapatului” sau P ,
pe viewportul de vârfuri diagonal opuse (pl , pb ), (pr , pt ):
pr − pl
xe = p l + (x − a)
b−a (8.8)
p b − pt
ye = pb − (y − c)
d−c
Deoarece coordonatele ecran sunt numere ı̂ntregi relaţiile din (8.8) presupun atribuirea unui
număr real unui ı̂ntreg. Pentru a reduce erorile de aproximare ı̂n loc de (8.8) se recomadă
Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007 7
relaţiile:
p r − pl
xe = [pl + (x − a) + 0.5]
b−a (8.9)
pb − pt
ye = [pb − (y − c) + 0.5],
d−c
adică se calculează partea ı̂ntreagă a membrilor drepţi. Astfel ı̂n cazul ı̂n care membrii drepţi din
(8.8) sunt (230.15, 318.77) rotunjirea s-ar face la (230, 318) ı̂n timp ce folosind (8.9) xe = 230,
iar ye = 319, adică aproximarea este mai bună.
Informaţii pentru cine doreşte să testeze algoritmul de mapare ı̂n Borlandc:
• se include graphics.h
• Se setează pe on, Graphics Library, ı̂n meniul: Options →Linker→Libraries
• În programul ı̂n care se include graphics.h se iniţializează modul grafic cu ajutorul funcţiei initgraph
(vezi help-ul din Borlandc). Unul din argumentele acestei funcţii este calea spre driverul egavga.bgi ce se
găseşte ı̂n sub-directorul bgi din borlandc, de exemplu,
"c:\\borlandc\\bgi" . Nu se setează calea, dacă egavga.bgi a fost copiat ı̂n directorul curent.
PO : E3 \ {(x, y, z) | z = 0} → π
care asociază fiecărui punct M (x, y, z) ce nu aparţine planului xOy, punctul M ′ de intersecţie
a dreptei (OM ) cu planul π.
• S-a exclus planul xOy din domeniul de definiţie deoarece dacă M este un punct din acest
plan, atunci dreapta (OM ) este paralelă cu planul π şi deci nu ı̂l poate intersecta.
• Preimaginea punctului M ′ ∈ π, PO−1 (M ′ ), adică mulţimea punctelor din spaţiu ce sunt
proiectate ı̂n M ′ constă ı̂n dreapta (OM ) minus punctul O. Deci proiecţia perspectivă nu este
injectivă.
• Expresia analitică aproiecţiei PO
Să determinăm coordonatele proiecţiei punctului M (x, y, z), z 6= 0. Dreapta (OM ) este
mulţimea:
−→ −−→
(OM ) = {P ∈ E3 | OP = tOM = t(x, y, z)T , t ∈ R}
8 Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007
z M (x, y, z)
M′ π: z=d
O y
Prin urmare un punct arbitrar de pe dreapta (OM ) are coordonatele (tx, ty, tz). Punctul P
aparţine planului π dacă coordonata a treia, tz = d, de unde rezultă că punctul proiecţie M ′ =
PO (M ) corespunde parametrului t = d/z şi deci:
³x y ´
PO (x, y, z) = d, d, d
z z
Identificând planul π cu E2 raportat la reperul ortonormat (O′ ; e1 , e2 ), unde {O′ } = Oz ∩ π şi
e1 , e2 sunt versorii axelor Ox, respectiv Oy, proiecţia perspectivă are expresia analitică:
³x y ´
P(x, y, z) = d, d
z z
M ′′
M (ρ, ϕ, θ)
ρ
ϕ P
O y
θ
Q M′
−−→
unghiului orientat dintre e1 versorul axei Ox şi OM ′ (Fig. 8.8).
Relaţia dintre coordonatele sferice şi coordonatele carteziene ale unui punct
Din triunghiurile OM M ′′ , OM M ′ şi OQM ′ (Fig. 8.8) rezultă următoarele relaţii:
x = ρ cos θ cos ϕ
y = ρ sin θ cos ϕ (8.10)
z = ρ sin ϕ
Un punct din spaţiu are coordonatele sferice (ρ, ϕ, θ) restricţionate respectiv la următoarele
intervale: ρ ∈ (0, ∞), ϕ ∈ [−π/2, π/2], θ ∈ [0, 2π]. Aplicaţia r : (0, ∞) × (−π/2, π/2) ×
[0, 2π) → R3 , definită prin:
z
z
A
y
θ0
y
x
x
A y
x
A
y
x
Fig.8.9: Sus: sfera de ecuaţie ρ = ρ0 (stânga), semiplanul de ecuaţie θ = θ0 (dreapta). Jos: conul de
ecuaţie ϕ = ϕ0 > 0 (stânga), şi de ecuaţie ϕ = ϕ0 < 0 (dreapta).
atunci conul degenerează ı̂n planul xOy, iar dacă ϕ0 < 0 atunci conul este poziţionat ca ı̂n
Fig.8.9, jos-dreapta.
• aceeaşi coordonată θ ca şi A, θ = θ0 , este semiplanul mărginit de z ′ Oz şi (unde Oz ′ are
direcţia −e3 ), perpendicular pe xOy. Intersecţia semiplanului cu planul xOy este o semidreaptă
ce formează cu Ox unghiul θ (Fig.8.9 sus-dreapta).
Pentru a construi un reper ortonormat cu originea ı̂ntr-un punct pe sferă introducem următoarele
noţiuni auxiliare:
O curbă diferenţiabilă din spaţiul E3 , dată parametric, este imaginea unui interval [a, b]
printr-o aplicaţie diferenţiabilă r : [a, b] → R3 , r(t) = (x(t), y(t), z(t)). Curba este interpretată
ca şi traiectoria unui punct mobil ı̂n intervalul de timp [a, b]. Poziţia la momentul t a punctului
mobil este (x(t), y(t), z(t)) = r(t) (Fig.8.10). Sensul de mişcare este de la r(a) spre r(b).
Vectorul viteză la momentul t sau vectorul director al tangentei ı̂n punctul atins la momentul
Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007 11
r ṙ(t) r(b)
y
a b
t r(a)
Fig.8.10: Curbă dată parametric şi vectorul director al tangentei ı̂n punctul r(t).
t este vectorul4 :
x′ (t)
ṙ(t) = y ′ (t)
z ′ (t)
Propoziţia 8.2.1 Fie sfera centrată ı̂n originea sistemului de axe ortogonale, având ı̂n coordo-
nate sferice ecuaţia ρ = ρ0 . Oricărui punct E(ρ0 , ϕ0 , θ0 ), ϕ 6= ±π/2, de pe această sferă i
se asociază reperul ortonormat drept RE = (E; v1 , v2 , v3 ) unde v1 este versorul tangentei la
cercul paralel prin E, v2 este versorul tangentei la (semi)cercul meridian prin E, iar v3 este
−−→
versorul direcţiei OM .
Demonstraţie: Cercul paralel prin punctul E este cercul de intersecţie al sferei ρ = ρ0 cu conul
ϕ = ϕ0 . Prin urmare el este parametrizat de r1 : [0, 2π) → R3 , r1 (θ) = r(ρ0 , ϕ0 , θ) unde r este
schimbarea de coordonate (8.11). Astfel vectorul tangent ı̂n punctul E la cercul paralel este:
Dar
ṙθ (ρ0 , ϕ0 , θ) = (−ρ0 sin θ cos ϕ0 , ρ0 cos θ cos ϕ) , 0)T
ṙ1 (θ0 ) = (−ρ0 sin θ0 cos ϕ0 , ρ0 cos θ0 cos ϕ0 , 0)T
ṙ1 (θ0 )
v1 = = (− sin θ0 , cos θ0 , 0)T
kṙ1 (θ0 )k
Semicercul meridian prin punctul E este semicercul de intersecţie al sferei ρ = ρ0 cu semiplanul
θ = θ0 şi este parametrizat de r2 : (−π/2, π/2) → R3 , r2 (ϕ) = r(ρ0 , ϕ, θ0 ). Vectorul tangent
la semicercul meridian prin E este vectorul:
v2 v3
v1
E
O
y
x
Fig.8.11: Reperul drept asociat unui punct pe o sferă cu centrul ı̂n originea axelor de coordonate.
ṙϕ (ρ0 , ϕ, θ0 ) = (−ρ0 cos θ0 sin ϕ, −ρ0 sin θ0 sin ϕ, ρ0 cos ϕ)T
ṙ2 (ϕ0 ) = (−ρ0 cos θ0 sin ϕ0 , −ρ0 sin θ0 sin ϕ0 , ρ0 cos ϕ0 )T
ṙ2 (ϕ0 )
v2 = = (− cos θ0 sin ϕ0 , − sin θ0 sin ϕ0 , cos ϕ0 )T
kṙ2 (ϕ0 )k
Evident că v1 ⊥ v2 . Mai rămâne să determinăm v3 . Segmentul (O, E] intersecţia conului
ϕ = ϕ0 cu semiplanul θ = θ0 şi este parametrizat de r3 : (0, ρ0 ] → R3 , r3 (ρ) = r(ρ, ϕ0 , θ = θ0 ).
Se verifică prin calcul direct că v3 ⊥ v1 şi v3 ⊥ v2 . Determinantul matricii de trecere de la baza
canonică Bc la baza ortonormată B′ = (v1 , v2 , v3 ) este:
¯ ¯
¯ − sin θ0 − cos θ0 sin ϕ0 cos θ0 cos ϕ0 ¯
¯ ¯
det(TBc B′ ) = det([v1 |v2 |v3 ]) = ¯¯ cos θ0 − sin θ0 sin ϕ0 sin θ0 cos ϕ0 ¯¯ = 1,
¯ 0 cos ϕ0 sin ϕ0 ¯
Problemă. Dacă coordonatele sferice sunt definite ca la analiză, adică ϕ este măsura unghiului
−−→
dintre OE şi Oz, ce puteţi spune despre baza construită ı̂n acelaşi mod, ţinând seama că ı̂n acest
caz ϕ ∈ [0, π] şi că ı̂n parametrizarea semicercului meridian ρ = ρ0 ,θ = θ0 , punctul mobil se
mişcă de la polul nord spre polul sud? Confirmaţi răspunsul dat prin argumente, efectuând şi
calcule.
Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007 13
R = max{dist(Mi , O), i = 1, N }
Poziţia observatorului se dă ı̂n coordonate sferice5 E(ρ0 , ϕ0 , θ0 ), cu ρ0 >> R. θ0 indică cât
se roteşte observatorul ı̂n jurul obiectului, iar ϕ0 cât se ı̂nalţa sau coboară observatorul pe
meridianul de ecuaţii ρ = ρ0 , θ = θ0 . I se asociază observatorului un reper ortonormat stâng
RE = (E; (u1 , u2 , u3 ) (Fig. 8.12) unde baza (u1 , u2 , u3 ) = (v1 , v2 , −v3 ), v1 , v2 , v3 fiind vectorii
bazei ortonormate drepte (Fig.8.11) ce se asociază punctului E de pe sfera ρ = ρ0 .
Notăm cu Ex′ y ′ z ′ sistemul de axe asociat acestui reper (Fig. 8.13). u3 (deci axa Ez ′ )
−−→
are direcţia şi sensul vectorului de observare EO, adică observatorul priveşte spre originea
sistemului lumii reale (centrul geometric al corpului 3D). Din ochiul E al observatorului emană
câte o rază prin fiecare punct al obiectului.
−−→
• Perpendicular pe direcţia de observare EO, la distanţa d de observator, se plasează planul
ecranului π : z ′ = d.
• pentru a aplica proiecţia perspectivă de centru E punctelor corpului 3D, trebuie să aflăm
coordonatele punctelor Mi ı̂n reperul observatorului.
Transformările de coordonate din reperul lumii reale ı̂n reperul observatorului se numesc
transformări de vizualizare.
5
Pentru un utilizator este mai simplu să dea coordonatele ϕ0 şi θ0 ı̂n grade. Apoi se transformă gradele ı̂n
grade ∗ π
radiani: radiani = .
180
14 Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007
u2
u1
E
u3
O
y
x
Dacă punctul M aparţinând corpului 3D ce trebuie vizualizat are coorrdonatele (x, y, z) rel-
ativ la sistemul lumii reale, atunci coordonatele sale (x′ , y ′ , z ′ ) relativ la sistemul observatorului
se află din relaţia lui Chasles:
−−→ −−→ −−→ −−→ −−→
EM = EO + OM = −OE + OM
−−→ −−→
Vectorul OM = xe1 + ye2 + ze3 (e1 , e2 , e3 fiind versorii axelor Ox, Oy, Oz), iar OE = xE e1 +
yE e2 + zE e3 , unde coordonatele carteziene (xE , yE , zE ) ale lui E se deduc din cele sferice
−−→
conform relaţiei (8.10). Astfel vectorul EM are relativ la baza (e1 , e2 , e3 ) exprimarea:
−−→
EM = (x − xE )e1 + (y − yE )e2 + (z − zE )e3
Matricea de trecere de la baza canonică la baza B′ este TBc B′ = [u1 |u2 |u3 ], deci:
x′ − sin θ0 cos θ0 0 x − xE
−−→ ′
EM = y = − cos θ0 sin φ0 − sin θ0 sin φ0 cos φ0 y − yE
′
z − cos θ0 cos φ0 − sin θ0 cos φ0 − sin φ0 z − zE
| {z }
TBTc B′
Cursul 8, Algebră liniară °
c E. Petrişor, noiembrie 2007 15
y′
z
x′
E
z′
O
y
x
Fig.8.13: Poziţia relativă a sistemului de axe a observatorului şi a sistemului lumii reale.
Având relaţiile de transformare a coordonatelor unui punct din sistemul lumii reale ı̂n sistemul
observatorului se poate efectua proiecţia perspectivă de centru E pe planul z ′ = d (Fig.8.14):
x′ y ′
PE (x′ , y ′ , z ′ ) = ( ′ d, ′ d)
z z
y′ z′ = d > 0
M′
z′
M
E x′
Probleme
Punctele din problemele 1-2 sunt raportate la sistemul din figura (8.14).
1. Să se arate că dacă A, B, C sunt trei puncte dintr-un plan perpendicular pe Ez ′ , α : z ′ =
a > 0 şi A′ , B ′ , C ′ sunt proiecţiile centrale de centru E pe planul π : z ′ = d, atunci △A′ B ′ C ′
este asemenea cu △ABC.
2. Cum construiţi reperul observatorului când poziţia acestuia relativ la sistemul lumii reale se
dă ı̂n coordonate carteziene, nu sferice?
3. Fie P, Q două puncte situate ”ı̂n spatele” observatorului E, adică P (0, 0, −c), Q(0, b, −c),
b > 0. Deduceţi poziţia segmentului P ′ Q′ , unde P ′ , Q′ este proiecţia de centru E a lui P, Q pe
planul π (desenaţi).