Racunarska grafka-Slajdovi-Elektrotehnicki fakultet 08 Geometrija, Slajdovi' predlog Racunarska grafka. University of Belgrade

Racunarska grafka

Opis: Racunarska grafka-Slajdovi-Elektrotehnicki fakultet 08 Geometrija; Skripta; Odnos dve tačke prema pravoj; Realizacija SameSide; Presek pravolinijskih segmenata; Odnos tačke i poligona; Realizacija Inside; Korekcija greške; Korigovana realizacija (1); Povećanje efikasnosti (2); Realizacija funkcije HIntersect;
Prikazivanje stranica  1  -  4  -  15
Docsity.com
Računarska grafika
Geometrijski odnosi
Docsity.com
22.05.2007.Geometrijski odnosi
2
Odnos dve tačke prema pravoj
zCilj je utvrditi da li su dve tačke
sa iste strane, ili
sa suprotnih strana jedne geometrijske prave
zPolazi se od jednačine prave lkroz dve tačke (x1,y1) i (x2,y2):
y = [(y2-y1)/(x2-x1)](x-x1) + y1, ili
f(p,l)=(x2-x1)(y-y1)-(y2-y1)(x-x1)=0,
za p(x,y) l
zOva prava deli ravan na dve poluravni
u jednoj važi:
f(p,l)=(x2-x1)(y-y1)-(y2-y1)(x-x1)>0
a u drugoj važi:
f(p,l)=(x2-x1)(y-y1)-(y2-y1)(x-x2)<0
f(p,l)>0
f(p,l)<0
(x1,y1)
(x2,y2)
l
Docsity.com
22.05.2007.Geometrijski odnosi
3
Izvođenje
zZamenjujući xi yza tačke p1 i p2 (čiji odnos prema pravoj lispitujemo)
i množeći odgovarajuće izraze, dobija se izraz:
g(p1,p2,l) = f(p1,l)*f(p2,l) =
((x2-x1)(p1.y-y1) - (y2-y1)(p1.x-x1))*
((x2-x1)(p2.y-y1) - (y2-y1)(p2.x-x1)), koji je:
> 0, ako su tačke sa iste strane prave linije
< 0, ako su tačke sa suprotnih strana linije i
= 0, ako je barem jedna tačka na liniji
zAko se odnos određuje u ekranskim koordinatama
ovde se može javiti problem prekoračenja pri množenju
zPošto je od interesa samo znak, a ne i vrednost proizvoda uvodimo:
Type Sign=-1..1;
Function Sgn(x: LongInt):Sign;
Begin If x=0 Then Sgn:= 0 Else If x>0 Then Sgn:= 1 Else Sgn:= -1 End;
Docsity.com
22.05.2007.Geometrijski odnosi
4
Realizacija SameSide
zFunkcija koja određuje odnos tačaka p1 i p2 prema pravoj liniji l:
Function SameSide(l: Line; p1,p2: Point): Sign;
Var dx,dx1,dx2,dy,dy1,dy2: LongInt;
Begin
dx:= l.p2.x - l.p1.x; dy:= l.p2.y - l.p1.y;
dx1:= p1.x - l.p1.x; dy1:= p1.y - l.p1.y;
dx2:= p2.x - l.p1.x; dy2:= p2.y - l.p1.y;
SameSide:= Sgn(dx*dy1 - dy*dx1) *
Sgn(dx*dy2 - dy*dx2)
End;
Docsity is not optimized for the browser you're using. In order to have a better experience please switch to Google Chrome, Firefox, Internet Explorer 9+ or Safari! Preuzmite Google Chrome