Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Algorytmy grafy podstawa, Schematy z Algorytmy zaawansowane

Prezentacja z podstawowymi pojeciami z algorytmow

Typologia: Schematy

2022/2023

Załadowany 25.09.2024

hipo-1
hipo-1 🇵🇱

1 dokument

1 / 10

Toggle sidebar

Ta strona nie jest widoczna w podglądzie

Nie przegap ważnych części!

bg1
Algorytmy geometryczne
Podstawy geometrii obliczeniowej
Tomasz M. Gwizdaªªa
Algorytmy geometryczne
Podstawy
Wspóªliniowo±¢, lewo, prawo
Wspóªliniowo±¢ punktów
yCyA
xCxA=yByA
xBxA
xA(yByC)+xB(yCyA)+ xC(yAyB) =
0
det(A,B,C) =
xAyA
1
xByB
1
xCyC
1
=
0
Algorytmy geometryczne
Podstawy
Wspóªliniowo±¢, lewo, prawo
Lewo i prawo
Narysujmy odcinek pomi¦dzy punktami
A(
1
,
1
)
i
B(
4
,
4
)
oraz punkty
C(
5
,
1
)
i
D(
1
,
5
)
Jak mo»na okre±li¢ po»enie punktów
C
i
D
wzgl¦dem odcinka
AB
?
Algorytmy geometryczne
Podstawy
Wspóªliniowo±¢, lewo, prawo
Lewo i prawo
det(A,B,C) =
111
441
511
=
12
det(A,B,D) =
111
441
151
=
12
det(B,A,C) =
441
111
511
=
12
det(B,A,D) =
441
111
151
=
12
Je±li
det(A,B,C)<
0 to punkt
C
jest z prawej strony odcinka
AB
Je±li
det(A,B,C)>
0 to punkt
C
jest z lewej strony odcinka
AB
Odcinka, czy póªprostej lub wektora?
Notes
Notes
Notes
Notes
pf3
pf4
pf5
pf8
pf9
pfa

Podgląd częściowego tekstu

Pobierz Algorytmy grafy podstawa i więcej Schematy w PDF z Algorytmy zaawansowane tylko na Docsity!

Podstawy geometrii obliczeniowej

Tomasz M. Gwizdaªªa

Algorytmy geometryczne Podstawy Wspóªliniowo±¢, lewo, prawo

Wspóªliniowo±¢ punktów

yC yA xC xA

yB yA xB xA

xA(yB yC )+xB (yC yA)+xC (yA yB ) = 0

det(A , B , C ) =

xA yA 1

xB yB 1

xC yC 1

Algorytmy geometryczne Podstawy Wspóªliniowo±¢, lewo, prawo

Lewo i prawo

Narysujmy odcinek pomi¦dzy punktami A( 1 , 1 ) i B( 4 , 4 )

oraz punkty C ( 5 , 1 ) i D( 1 , 5 )

Jak mo»na okre±li¢ poªo»enie punktów C i D wzgl¦dem odcinka AB?

Algorytmy geometryczne Podstawy Wspóªliniowo±¢, lewo, prawo

Lewo i prawo

det(A , B , C ) =

det(A , B , D) =

det(B , A , C ) =

det(B , A , D) =

Je±li det(A , B , C ) < 0 to punkt C jest z prawej strony odcinka AB Je±li det(A , B , C ) > 0 to punkt C jest z lewej strony odcinka AB

Odcinka, czy póªprostej lub wektora?

Notes

Notes

Notes

Notes

Podstawy Wspóªliniowo±¢, lewo, prawo

Wspóªliniowo±¢ punktów

Jak jednoznacznie okre±li¢, czy punkt C nale»y do odcinka AB?

Aby punkt C nale»aª do odcinka AB potrzeba i wystarcza, aby punkty te byªy wspóªliniowe, oraz

min(xA , xB ) ¬ xC ¬ max(xA , xB ) min(yA , yB ) ¬ yC ¬ max(yA , yB )

Algorytmy geometryczne Podstawy Przecinanie

Przecinanie si¦ odcinków

Jak wida¢ odcinek AB jest przecinany przez odcinki: K 1 L 1 K 2 L 2 K 3 L 3

Jak zapisa¢ reguª¦ przecinania?

Algorytmy geometryczne Podstawy Przecinanie

Przecinanie si¦ odcinków

det(A , B , L 1 ) < 0, det(A , B , K 1 ) > 0 det(K 1 , L 1 , A) < 0, det(K 1 , L 1 , B) > 0

det(A , B , L 2 ) < 0, det(A , B , K 2 ) > 0 det(K 2 , L 2 , A) = 0, det(K 2 , L 2 , B) > 0

det(A , B , L 3 ) = 0, det(A , B , K 3 ) > 0 det(K 3 , L 3 , A) < 0, det(K 3 , L 3 , B) = 0

det(A , B , L 4 ) < 0, det(A , B , K 4 ) < 0 det(K 4 , L 4 , A) < 0, det(K 4 , L 4 , B) > 0

Algorytmy geometryczne Podstawy Przecinanie

Przecinanie si¦ odcinków

Warunek przecinania si¦ odcinków mo»na sformuªowa¢ nast¦puj¡co:

Aby dwa odcinki si¦ przecinaªy nie mo»e mie¢ miejsca taka sytuacja,

»e oba kra«ce jednego z odcinków s¡ po tej samej stronie drugiego.

Oba wyznaczniki nie mog¡ mie¢ tego samego znaku.

Notes

Notes

Notes

Notes

Przecinanie i zamiatanie Algorytm zamiatania

Struktury

Wykorzystujemy dwie struktury danych:

▶ X, Harmonogram zdarze«

posortowany wzgl¦dem wspóªrz¦dnej x zbiór punktów

ko«cowych odcinków oraz punktów przeci¦¢ odcinków

aktywnych, które byªy s¡siadami w strukturze Y

▶ Y, Struktura stanu

zbiór zawieraj¡cy nazwy odcinków aktywnych

uporz¡dkowanych wzgl¦dem wspóªrz¦dnej y punktu

przeci¦cia z miotª¡, cz¦sto zbalansowane BST

Algorytmy geometryczne Przecinanie i zamiatanie Algorytm zamiatania

Przebieg

▶ W strukturze X umie±¢ uporz¡dkowane ko«ce wszystkich

odcinków

▶ Wybierz i usu« z X element minimalny. Je±li jest on:

▶ pocz¡tkiem odcinka - dodajemy nazw¦ do Y;

sprawdzamy przeci¦cia z s¡siadami w Y; je±li takie

istniej¡ umieszczamy wspóªrz¦dne przeci¦¢ w X

▶ ko«cem odcinka - usuwamy nazw¦ z Y

▶ punktem przeci¦cia odcinków - zamieniamy poªo»enia

odcinków w Y; sprawdzamy przeci¦cia na prawo od

miotªy z nowymi s¡siadami; je±li takie istniej¡

umieszczamy wspóªrz¦dne przeci¦¢ w X

▶ Te operacje powtarzamy a» do opró»nienia X

Algorytmy geometryczne Przecinanie i zamiatanie Algorytm zamiatania

Przykªad

Rozwa»my zbiór skªadaj¡cy si¦ z odcinków:

A[( 1 , 1 ) , ( 2 , 4 )]

B[( 1 , 3 ) , ( 4 , 0 )]

C [( 1. 5 , 2 ) , ( 3 , 2 )]

Punkty przeci¦cia

A z B ( 1_._ 5 , 2_._ 5 ) B z C ( 2 , 2 )

Algorytmy geometryczne Przecinanie i zamiatanie Algorytm zamiatania

Przykªad (1)

X:

(^1) A , b , (^1) B , b , 1_._ (^5) C , b , (^2) A , e , (^3) C , e , (^4) B , e

Y:

X:

(^1) B , b , 1_._ (^5) C , b , (^2) A , e , (^3) C , e , (^4) B , e

Y: A( 1 )

Notes

Notes

Notes

Notes

Przecinanie i zamiatanie Algorytm zamiatania

Przykªad (2)

X:

1_._ (^5) C , b , (^2) A , e , (^3) C , e , (^4) B , e

Y: A( 1 ) , B( 3 )

X:

1_._ (^5) AB , 1_._ (^5) C , b , (^2) A , e , (^3) C , e , (^4) B , e

X:

1_._ (^5) C , b , (^2) A , e , (^3) C , e , (^4) B , e

Y: B( 2. 5 ) , A( 2. 5 )

Algorytmy geometryczne Przecinanie i zamiatanie Algorytm zamiatania

Przykªad (3)

X:

(^2) A , e , (^3) C , e , (^4) B , e

Y: C ( 2 ) , B( 2. 5 ) , A( 2. 5 )

X:

(^2) A , e , (^2) BC , (^3) C , e , (^4) B , e

X:

(^2) BC , (^3) C , e , (^4) B , e

Y: C ( 2 ) , B( 2. 5 )

Algorytmy geometryczne Przecinanie i zamiatanie Algorytm zamiatania

Przykªad (4)

X:

(^3) C , e , (^4) B , e

Y: B( 2 ) , C ( 2 )

X:

(^4) B , e

Y: B( 2 )

itd.

Algorytmy geometryczne Wypukªa otoczka Sortowanie wg. k¡ta promienia wodz¡cego

Cel

Procedura sortowania ze wzgl¦du na k¡t promienia wodz¡cego

poprowadzonego do danego punktu jest procedur¡

pomocnicz¡, wykorzystywan¡ w innych zagadnieniach.

Notes

Notes

Notes

Notes

Wypukªa otoczka Algorytm Grahama

Kolejne dwa punkty

WO: A, F, H

Wiemy te», »e do wypukªej otoczki b¦dzie nale»aª punkt F.

Algorytmy geometryczne Wypukªa otoczka Algorytm Grahama

Powtarzamy

Podstaw¡ algorytmu jest sprawdzenie, czy kolejny punkt znajduje si¦ po prawej, czy po lewej stronie odcinka ª¡cz¡cego dwa ostatnie punktu w strukturze WO. Wyró»niamy dwie mo»liwo±ci: ▶ (^) Punkt znajduje si¦ po lewej stronie odcinka lub jest z nim wspóªliniowy - kolejny punkt dodajemy do struktury WO ▶ Punkt znajduje si¦ po prawej stronie odcinka - kolejny punkt zast¦puje ostatni w strukturze WO (trzeba wtedy wykona¢ sprawdzenie tak»e dla poprzednich par punktów na li±cie, ewentualnie usuwaj¡c wcze±niejsze punkty z WO)

WO: A, F, C

Algorytmy geometryczne Wypukªa otoczka Algorytm Grahama

WO: A, F, C, E

Ten algorytm powtarzamy dla ka»dego punktu na posortowanej li±cie.

Algorytmy geometryczne Wypukªa otoczka Algorytm Grahama

WO: A, F, C, E

Notes

Notes

Notes

Notes

Wypukªa otoczka Algorytm Grahama

WO: A, F, C, B

Algorytmy geometryczne Wypukªa otoczka Algorytm Grahama

WO: A, F, C, B, D

Algorytmy geometryczne Wypukªa otoczka Algorytm Grahama

WO: A, F, C, B, D, G

Punkt G jest ostatnim analizowanym punktem.

Algorytmy geometryczne Drzewo BSP Kolejno±¢ renderowania obiektów

Poj¦cie

BSP  Binary Space Partition, Binarny Podziaª Przestrzeni

Drzewo BSP jest struktur¡ umo»liwiaj¡c¡ okre±lenie kolejno±ci

rysowania obiektów tak, aby obiekt znajduj¡cy si¦ dalej nie

przekrywaª obiektów bli»szych.

Innymi popularnymi metodami takiego porz¡dkowania s¡

metody typu:

depth sort

z-sort

Notes

Notes

Notes

Notes

Drzewo BSP Drzewo BSP

Rysowanie

Kolejno±¢ rysowania musi by¢ taka, aby obiekty dalsze byªy

rysowane wcze±niej, czyli wybieramy zawsze najpierw prawe

poddrzewa i obiekty.

Zatem kolejno±¢ rysowania jest nast¦puj¡ca:

D, A, B, G, C, E, F

Algorytmy geometryczne Drzewo BSP Drzewo BSP

Problemy

1. Obiekty o du»ych rozmiarach, które trzeba dzieli¢

2. Zmiana poªo»enia obserwatora

Algorytmy geometryczne Drzewo BSP Drzewo BSP

Problemy

Zaªó»my, »e obserwator zmieniª

poªo»enie.

Przeanalizujmy drzewo BSP

zapisuj¡c w k6 ka»dym w¦¹le, czy

obserwator jest w podprzestrzeni

wskazywanej przez strzaªk¦ (p), czy

w drugiej (z).

Post¦pujmy teraz analogicznie, jak

w poprzedniej sytuacji, czyli

najpierw wybieramy to, co jest w

dopeªniaj¡cej podprzestrzeni

A B D F E C G

Notes

Notes

Notes

Notes