Wst p do graki komputerowej i geometrii obliczeniowej. Jakub Maksymiuk

Podobne dokumenty
Wstęp do grafiki komputerowej i geometrii obliczeniowej. Jakub Maksymiuk

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

Wektory w przestrzeni

Stereometria (geometria przestrzenna)

Arkusz 4. Elementy geometrii analitycznej w przestrzeni

Elementy geometrii w przestrzeni R 3

r = x x2 2 + x2 3.

Elementy geometrii analitycznej w przestrzeni

Przeksztaªcenia liniowe

Krzywe i powierzchnie stopnia drugiego

WBiA Architektura i Urbanistyka. 1. Wykonaj dziaªania na macierzach: Które z iloczynów: A 2 B, AB 2, BA 2, B 2 3, B = 1 2 0

Wykªad 4. Funkcje wielu zmiennych.

Graka komputerowa Wykªad 3 Geometria pªaszczyzny

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

AM II /2019 (gr. 2 i 3) zadania przygotowawcze do I kolokwium

Rachunek caªkowy funkcji wielu zmiennych

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

1. Przedstaw w postaci algebraicznej liczby zespolone: 2. Narysuj zbiory punktów na pªaszczy¹nie:

Podstawy POV-Ray'a. Diana Doma«ska. Uniwersytet l ski. Diana Doma«ska (U ) Podstawy POV-Ray'a 1 / 13

Metody numeryczne i statystyka dla in»ynierów

1 Granice funkcji wielu zmiennych.

1 a + b 1 = 1 a + 1 b 1. (a + b 1)(a + b ab) = ab, (a + b)(a + b ab 1) = 0, (a + b)[a(1 b) + (b 1)] = 0,

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Materiaªy do Repetytorium z matematyki

Zbiory i odwzorowania

c Marcin Sydow Planarno± Grafy i Zastosowania Tw. Eulera 7: Planarno± Inne powierzchnie Dualno± Podsumowanie

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

1 Bª dy i arytmetyka zmiennopozycyjna

Ksztaªt orbity planety: I prawo Keplera

Informacje pomocnicze

Lab. 02: Algorytm Schrage

Optyka geometryczna. Zwierciadªa. Marcin S. Ma kowicz. rok szk. 2009/2010. Zespóª Szkóª Ponadgimnazjalnych Nr 2 w Brzesku

Zadania z PM II A. Strojnowski str. 1. Zadania przygotowawcze z Podstaw Matematyki seria 2

Funkcje, wielomiany. Informacje pomocnicze

Ekstremalnie fajne równania

Matematyka 1. Šukasz Dawidowski. Instytut Matematyki, Uniwersytet l ski

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

Optymalizacja wypukªa: wybrane zagadnienia i zastosowania

Janusz Adamowski METODY OBLICZENIOWE FIZYKI Zastosowanie eliptycznych równa«ró»niczkowych

Funkcje wielu zmiennych

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM ROZSZERZONY. S x 3x y. 1.5 Podanie odpowiedzi: Poszukiwane liczby to : 2, 6, 5.

*** Teoria popytu konsumenta *** I. Pole preferencji konsumenta 1. Przestrze«towarów 2. Relacja preferencji konsumenta 3. Optymalny koszyk towarów

Modelowanie obiektów 3D

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Metody numeryczne i statystyka dla in»ynierów

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Opis matematyczny ukªadów liniowych

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

a) f : R R R: f(x, y) = x 2 y 2 ; f(x, y) = 3xy; f(x, y) = max(xy, xy); b) g : R 2 R 2 R: g((x 1, y 1 ), (x 2, y 2 )) = 2x 1 y 1 x 2 y 2 ;

Technologie Informacyjne

Funkcje wielu zmiennych

c Marcin Sydow Spójno± Grafy i Zastosowania Grafy Eulerowskie 2: Drogi i Cykle Grafy Hamiltonowskie Podsumowanie

Pochodna funkcji jednej zmiennej

Kurs z matematyki - zadania

PRZYK ADOWY ARKUSZ EGZAMINACYJNY Z MATEMATYKI

Wojewódzki Konkurs Matematyczny

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

PRZYK ADOWY ARKUSZ EGZAMINACYJNY Z MATEMATYKI

Teoria grafów i jej zastosowania. 1 / 126

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

ZADANIA ZAMKNI TE. W zadaniach od 1. do 20. wybierz i zaznacz na karcie odpowiedzi jedn poprawn odpowied.

Wektor. Uporz dkowany ukªad liczb (najcz ±ciej: dwóch - na pªaszczy¹nie, trzech - w przestrzeni 3D).

Zadania z analizy matematycznej - sem. II Ekstrema funkcji wielu zmiennych, twierdzenia o funkcji odwrotnej i funkcji uwikªanej

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Rozdziaª 13. Przykªadowe projekty zaliczeniowe

gdzie wektory α i tworz baz ortonormaln przestrzeni E n

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

det A := a 11, ( 1) 1+j a 1j det A 1j, a 11 a 12 a 21 a 22 Wn. 1 (Wyznacznik macierzy stopnia 2:). = a 11a 22 a 33 +a 12 a 23 a 31 +a 13 a 21 a 32

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Macierze i Wyznaczniki

Interpolacja Lagrange'a, bazy wielomianów

Co i czym mo»na skonstruowa

Aproksymacja funkcji metod najmniejszych kwadratów

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

1 Ró»niczka drugiego rz du i ekstrema

Metody dowodzenia twierdze«

Egzamin maturalny z matematyki Poziom podstawowy ZADANIA ZAMKNI TE. W zadaniach od 1. do 25. wybierz i zaznacz na karcie odpowiedzi poprawn odpowied.

LZNK. Rozkªad QR. Metoda Householdera

Interpolacja funkcjami sklejanymi

1 Trochoidalny selektor elektronów

PAKIET MathCad - Część III

Funkcja kwadratowa, wielomiany oraz funkcje wymierne

Przetwarzanie sygnaªów

2 Liczby rzeczywiste - cz. 2

1 Metody iteracyjne rozwi zywania równania f(x)=0

Kinematyka 2/15. Andrzej Kapanowski ufkapano/ Instytut Fizyki, Uniwersytet Jagiello«ski, Kraków. A. Kapanowski Kinematyka

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Zagadnienia na wej±ciówki z matematyki Technologia Chemiczna

I Rok LOGISTYKI: wykªad 2 Pochodna funkcji. iloraz ró»nicowy x y x

GRK 4. dr Wojciech Palubicki

Algebra liniowa z geometria. - zadania Rok akademicki 2010/2011

Transkrypt:

Wst p do graki komputerowej i geometrii obliczeniowej Jakub Maksymiuk

Przeksztaªcenia geometryczne w 2D 1 Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Translacje Skalowanie wzgl dem (0, 0) Odbicie wzgl dem osi Obrót wzgl dem (0, 0) Pochylenie osiowe Zªo»enia przeksztaªce«zªo»enia przeksztaªce«rzut oka na zastosowania

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Przeksztaªceniem (anicznym) pªaszczyzny nazywamy funkcj L: R 2 R 2 postaci L(x, y) = (ax + by + c, dx + ey + f), gdzie a, b, c, d, e, f R. W postaci macierzowej [ ] [ ] a b e L = + c d f

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Translacje Translacj o wektor (h, k) oznaczamy T(h, k). T(h, k)(x, y) = (x + h, y + k). W postaci macierzowej translacja zapisuje si jako [ ] h T(h, k) = Id + k Przeksztaªcenie odwrotne T(h, k) jest tak»e translacj, wzór: T(h, k) 1 = T( h, k)

4 2-4 - 3-2 - 1 1-2 - 4

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Skalowanie wzgl dem (0, 0) Skalowanie w wspóªczynnikach (s x, s y ) oznaczamy S(s x, s y ). S(s x, s y )(x, y) = (s x x, s y y). W postaci macierzowej skalowanie zapisuje si jako [ ] sx 0 S(s x, s y ) = 0 s y Je»eli s > 1 skalowanie powi ksza obraz, je»eli s < 1 pomniejsza. Je»eli s x = s y to skalowanie jest proporcjonalne. Odwzorowanie odwrotne do skalowania jest skalowaniem, wzór: S(s x, s y ) 1 = S(1/s x, 1/s y ) Skalowanie wzgl dem innych punktów omówimy pó¹niej.

10 5 2 4 6 8 10-5 - 10

2 1 1 2 3 4 5 6 7-1 - 2-3

2 1 2 4 6 8 10 12 14-1 - 2-3

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Odbicie wzgl dem osi Odbicie wzgl dem osi x i y oznaczamy R x i R y R x (x, y) = (x, y) R y (x, y) = ( x, y) W postaci macierzowej odbicia zapisuj si jako [ ] [ ] 1 0 1 0 R x = R 0 1 y = 0 1 Odbicie wzgl dem innych osi omówimy pó¹niej.

4 2-4 - 2 2 4-2 - 4

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Obrót wzgl dem (0, 0) Obrót wzgl dem punktu (0, 0) o k t θ oznaczamy Rot(θ) Rot(θ)(x, y) = (x cos θ y sin θ, x sin θ + y cos θ) W postaci macierzowej obrót zapisuje si jako [ ] cos θ sin θ Rot(θ) = sin θ cos θ Obroty wzgl dem innych punktów omówimy pó¹niej.

4 2-4 - 2 2 4-2 - 4

4 2-4 -2 2 4-2 -4

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Pochylenie osiowe pochylenie w kierunku wektora v o wspóªczynniku r oznaczamy Sh(v, r) Sh(v, r)(x, y) = (x + r(v 1 y v 2 x)v 1, y + r(v 1 y + rv 2 x)v 2 ) gdzie d = dist((x, y), O). W postaci macierzowej pochylenie zapisuje si jako [ 1 rv1 v Sh(v, r) = 2 rv2 2 ] rv1 2 1 + rv 1 v 2

2 1-1 1 2-1

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Zªo»enia przeksztaªce«w grace komputerowej u»ywa sie zwrotu concatenation. Konkatenacj dwóch i wi cej przeksztaªce«mo»emy wyznaczy korzystaj c z wªasno±ci dziaªa«na macierzach P P [ ] P cos θ sin θ = Rot(θ)P = P sin θ cos θ [ ] [ ] P = R x P 1 0 cos θ sin θ = R x Rot(θ)P = P 0 1 sin θ cos θ P Rot(θ) R x

Przeksztaªcenia geometryczne Przeksztaªcenia na pªaszczy¹nie Zªo»enia przeksztaªce«problem pojawia si je»eli chcemy u»y translacji, gdy» wtedy konkatenacja nie jest tylko mno»eniem macierzy P Rot(θ) P T(h,k) P R x P [ ] P cos θ sin θ = Rot(θ)P = P sin θ cos θ [ ] P = T(h, k)p cos θ sin θ = T(h, k)rot(θ)p = P + sin θ cos θ [ ] ([ ] [ ]) P = R x P 1 0 cos θ sin θ h = P + 0 1 sin θ cos θ k [ ] h k

Rzut oka na zastosowania Przeksztaªcenia geometryczne Rzut oka na zastosowania

Wspóªrz dne jednorodne w 2D 2 Wspóªrz dne jednorodne na pªaszczy¹nie Wspóªrz dne jednorodne. Pªaszczyzna rzutowa Punkt w niesko«czono±ci Przeksztaªcenia we wspóªrz dnych jednorodnych

Wspóªrz dne jednorodne na pªaszczy¹nie Wspóªrz dne jednorodne. Pªaszczyzna rzutowa W zbiorze X = R 3 \ {0, 0, 0} wprowadzamy relacj równowa»no±ci (x 0, y 0, w 0 ) (x 1, y 1, w 1 ) r 0 (x 0, y 0, w 0 ) = r(x 1, y 1, w 1 ) Klasy abstrakcji tej relacji [(x, y, w)] = {r(x, y, w): r R \ {0}} nazywamy wspóªrz dnymi jednorodnymi (lub rzutowymi). Zbiór X/ nazywamy pªaszczyzn rzutow P 2. Klasa [(x, y, w)] - punkt na pªaszczy¹nie rzutowej.

Wspóªrz dne jednorodne na pªaszczy¹nie Wspóªrz dne jednorodne. Pªaszczyzna rzutowa Punkt (x, y) zapisany we wspóªrz dnych kartezja«skich b dziemy reprezentowa we wspóªrz dnych jako (x, y, 1) (albo (rx, ry, r), r 0). Ka»dy punkt (X, Y, W ), W 0 mo»emy przedstawi w postaci (x, y, 1), x = X/W, y = Y/W Mamy zatem odpowiednio± : (x, y) R 2 1 1 (X, Y, W ) P 2, W 0

Wspóªrz dne jednorodne na pªaszczy¹nie Punkt w niesko«czono±ci (x, y, 0) - punkt w niesko«czono±ci w kierunku wektora (x, y) We¹my prost w kierunku wektora (x 0, y 0 ) (x(t), y(t)) = (tx 0 + a, ty 0 + b) we wspóªrz dnych jednorodnych ma ona równanie (tx + a, ty + b, 1) (x + a/t, ty + b/t, 1/t) Przechodz c z t otrzymujemy punkt (x, y, 0).

Wspóªrz dne jednorodne na pªaszczy¹nie Punkt w niesko«czono±ci Dwie proste równolegªe przecinaj si w niesko«czono±ci: x + 2y = 1 x + 2y = 2 we wspóªrz dnych jednorodnych otrzymujemy X + 2Y = W X + 2Y = 2W Rozwi zuj c ukªad równa«dostajemy ( 2r, r, 0) ( 2, 1, 0).

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych Przeksztaªceniem (rzutowym) pªaszczyzny nazywamy funkcj L: P 2 P 2 postaci L(x, y, w) = (ax + by + cw, dx + ey + fw, gx + hy + kw), gdzie a, b, c, d, e, f, g, h, k R. W postaci macierzowej a b c L = d e f g h k Gdy g = h = 0, k 0, to L nazywamy przeksztaªceniem anicznym(!).

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych Translacja: 1 0 h T(h, k) = 0 1 k T(h, k)(x, y) = (x + h, y + k, 1) 0 0 1 Skalowanie: s x 0 0 S(s x, s y ) = 0 s y 0 S(s x, s y )(x, y) = (s x x, s y y, 1) 0 0 1

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych Obrót: cos θ sin θ 0 R(θ) = sin θ cos θ 0 0 0 1 R(h, k)(x, y) = (cos θ x sin θ y, sin θ x + cos θ y, 1)

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych Obrót wokól punktu (x 0, y 0 ): R(x 0, y 0 )(θ) = T( x 0, y 0 )R(θ)T(x 0, y 0 ) = 1 0 x 0 cos θ sin θ 0 1 0 x 0 = 0 1 y 0 sin θ cos θ 0 0 1 y 0 = 0 0 1 0 0 1 0 0 1 1 0 x 0 cos θ sin θ x 0 = 0 1 y 0 sin θ cos θ y 0 = 0 0 1 0 0 1 cos θ sin θ x 0 cos θ x 0 + sin θ y 0 = sin θ cos θ y 0 sin θ x 0 cos θ y 0 0 0 1

2.0 1.5 1.0 0.5 2.0 1.5 1.0-1.0-0.5 0.5 1.0 1.5 2.0-0.5 0.5-1.0 0.5 1.0 1.5 2.0

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych Zªo»enia prz Odbicie wzgl dem osi ax + by + c = 0 (zaª. b 0): 1 przesun punkt (0, c/b) do ±rodka ukªadu 2 obróci prost o k t θ, gdzie tan θ = a/b (czym jest teraz?) 3 wykona odbicie 4 obróci o k t θ 5 przesun o wektor (0, c/b)

3 2 1-2.0-1.5-1.0-0.5 0.5 1.0-1 -2

Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych wiczenia: Sprawdzi poprawno± powy»szych wzorów. Napisa macierz przeprowadzaj c standardowy ukªad wspóªrz dnych w ukªad o ±rodku (x 0, y 0 ) pierwszej osi wyznaczonej przez wektor (v 1, v 2 ) drugiej osi wyznaczonej przez wektor prostopadªy. Wyja±ni co robi macierz s x 0 0 S(s x, s y ; s w ) = 0 s y 0 0 0 s w Poda macierze innych przeksztaªce«.

Rzut oka na zastosowania. Wspóªrz dne jednorodne na pªaszczy¹nie Przeksztaªcenia we wspóªrz dnych jednorodnych

Przeksztaªcenia geometryczne w 3D 3 Przeksztaªcenia w 3D Przeksztaªcenia we wspóªrz dnych jednorodnych Translacja i skalowanie Obroty wokóª osi ukªadu Obrót wokóª dowolnej osi Odbicia wzgl dem pªaszczyzn ukªadu Odbicie wzgl dem dowolnej pªaszczyzny wiczenia

Przeksztaªcenia w 3D Przeksztaªcenia we wspóªrz dnych jednorodnych Trójwymiarow przestrze«rzutow P 3 tworzymy analogicznie do P 2 Przeksztaªceniem (rzutowym) pªaszczyzny nazywamy funkcj L: P 3 P 3 postaci m 11 m 12 m 13 m 14 L = m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 gdzie m ij R. Gdy m 41 = m 42 = m 43 = 00, m 44 0, to L nazywamy przeksztaªceniem anicznym(!).

Przeksztaªcenia w 3D Translacja i skalowanie Translacja: Skalowanie: 1 0 0 h 1 T(h 1, h 2, h 3 ) = 0 1 0 h 2 0 0 1 h 3 0 0 0 1 s x 0 0 0 S(s x, s y, s z ) = 0 s y 0 0 0 0 s z 0 0 0 0 1

Przeksztaªcenia w 3D Obroty wokóª osi ukªadu Obroty: 1 0 0 0 R x (θ) = cos(θ) sin(θ) 0 0 sin(θ) cos(θ) 0 0 0 0 0 1 cos(θ) 0 sin(θ) 0 R y (θ) = 0 1 0 0 sin(θ) 0 cos(θ) 0 0 0 0 1 cos(θ) sin(θ) 0 0 R z (θ) = sin(θ) cos(θ) 0 0 0 0 1 0 0 0 0 1

Przeksztaªcenia w 3D Obrót wokóª dowolnej osi Dana jest prosta l przechodz ca przez punkty P (p 1, p 2, p 3 ) oraz Q(q 1, q 2, q 3 ) oaz k t θ. 1 R = Q P = (r 1, r 2, r 3 ) 2 P T( p 1, p 2, p 3 ) O (co si dzieje z prost l?) 3 Je»eli prosta OR jest osi ukªadu to wykonaj obrót o θ wokóª tej osi i przejd¹ do punktu 5

Przeksztaªcenia w 3D Obrót wokóª dowolnej osi 4 Przeciwnym wypadku (zaª. r 2, r 3 0): a) Wykonaj obrót wokóª osi Ox o k t θ x sin θ x = r 2 / r2 2 + r2 3 cos θ x = r 3 / r2 2 + r2 3 pierwotna o± obrotu le»y na pªaszczy¹nie Oxz b) Wykonaj obrót wokóª osi Oy o k t θ y sin θ y = r 1 cos θ r2 2 + r2 3 pierwotna o± obrotu jest teraz osi Oz c) Wykonaj obrót o θ wokóª osi Oz d) Wykonaj operacje odwrotn do puntu b) a potem odwrotn do punktu a). 5 Wykonaj translacj odwrotn do T( p 1, p 2, p 3 )

Przeksztaªcenia w 3D Obrót wokóª dowolnej osi Podsumowuj c: T(p 1, p 2, p 3 )R x (θ x )R y ( θ y )R z (θ)r y (θ y )R x ( θ x )T( p 1, p 2, p 3 )

Przeksztaªcenia w 3D Odbicia wzgl dem pªaszczyzn ukªadu Odbicia: 1 0 0 0 1 0 0 0 R yz = 0 1 0 0 0 0 1 0 R xz = 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 R xy = 0 1 0 0 0 0 1 0? = 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1

Przeksztaªcenia w 3D Odbicie wzgl dem dowolnej pªaszczyzny Algorytm: 1 Sprowad¹ pªaszczyzn symetrii do pªaszczyzny ukªadu. 2 Wykonaj odbicie. 3 Wykonaj przeksztaªcenia odwrotne do punktu 1 (w odwrotnej kolejno±ci)

Przeksztaªcenia w 3D wiczenia wiczenia: Sprawdzi poprawno± powy»szych wzorów. Napisa macierz przeprowadzaj c standardowy ukªad wspóªrz dnych w ukªad o ±rodku (x 0, y 0, z 0 ) pierwszej osi wyznaczonej przez wektor (v 1, v 2, v 3 ) pozostaªych osiach wyznaczonych przez wektory prostopadªe zachowa / zmieni orientacje ukªadu Poda macierze innych przeksztaªce«.

Rzutowanie 4 Rzutowanie Na pªaszczy¹nie Pespektywiczne Równolegªe W przestrzeni

Rzutowanie Na pªaszczy¹nie Pespektywiczne Dane s na pªaszczy¹nie: prosta l : ax + by + c = 0 punkt V = (v x, v y ) punkty P 1,... Zadanie: znale¹ punkty przeci cia prostych P i V z prost l (rzuty)

20 10 V -20-10 10 20-10 l

Rzutowanie Na pªaszczy¹nie Macierz rzutowania (we wspóªrz dnych jednorodnych): c bv y bv x cv x M = V T l l, V Id 3 = av y c av x cv y a b av x bv y gdzie V = (v x, v y, 1), l = (a b c)

Rzutowanie Na pªaszczy¹nie Równolegªe Je»eli zamiast V = (v x, v y, 1) u»yjemy punktu w niesko«czono±ci V = (v x, v y, 0), to dostaniemy macierz rzutu równolegªego: M = c bv y bv x cv x av y c av x cv y 0 0 c av x bv y

20 v x, v y 10-20 -10 10 20-10

Rzutowanie W przestrzeni Dane s w przestrzeni: pªaszczyzna n : ax + by + cz + d = 0 punkt V = (v x, v y, v z ) punkty P 1,... Zadanie: znale¹ punkty przeci cia prostych P i V z pªaszczyzn n

Rzutowanie W przestrzeni d bv y cv z bv x cv x dv x av y d av x cv z cv y dv y av z bv z d av x bv y dv z a b c av x bv y cv z bv y cv z bv x cv x dv x av y av x cv z cv y dv y av z bv z av x bv y dv z 0 0 0 av x bv y cv z

Potok przeksztaªce«5 Potok przeksztaªce«device coordinate transform Viewplane coordinate transform Viewing pipeline

Potok przeksztaªce«device coordinate transform Macierz DC Zadaniem tej macierzy jest umieszczenie obiektu w oknie na ekranie. w ukªadzie wspóªrz dnych (x, y) obiekt jest opisany przez prostok t ograniczaj cy o wierzchoªkach (x min, y min ) oraz (x max, y max ). ten prostok t ma zosta umieszczony w oknie w ukªadzie wspóªrz dnych (ekranu) (u, v) obiekt jest opisany przez prostok t ograniczaj cy o wierzchoªkach (u min, v min ) oraz (u max, v max ).

Potok przeksztaªce«device coordinate transform ( umax u min DC = T(u min, v min )S, v ) max v min T( x min, y min ) x max x min y max y min DC = u max u min x max x min 0 0 v max v min y max y min u min x max u maxx min x max x min v min y max v maxy min y max y min 0 0 1

Potok przeksztaªce«viewplane coordinate transform Macierz VC Zadaniem tej macierzy jest zamiana wspóªrz dnych 3D na 2D. obiekt (wierzchoªki) zostaª zrzutowany na pªaszczyzn Π opisa ten obiekt w ukªadzie wspóªrz dnych (X, Y ) ukªad wsp. (X, Y ) jest wyznaczony przez ±rodek O = (o 1, o 2, o 3 ), wersor osi X: X = (x 1, x 2, x 3 ), wersor osi Y : Y = (y 1, y 2, y 3 ) Punkty O, X O le» na pªaszczy¹nie Π

Potok przeksztaªce«viewplane coordinate transform Wyznaczanie VC Mamy przeksztaªci P Π na P = VCP. Zamiast wyznacza macierz bezpo±rednio szukamy macierzy K takiej,»e KP = P. Uwaga: K VC 1 (wymiary!) Korzystamy z to»samo±ci (A T A) 1 A T A = I. Macierz VC = (K T K) 1 K T jest lewostronnie odwrotna do K.

Potok przeksztaªce«viewplane coordinate transform x 1 y 1 o 1 K = x 2 y 2 o 2 x 3 y 3 o 3 0 0 1 o 1 x 1 y 1 x 1 y 1 o 1 o 2 x 2 y 2 o 3 x 3 y 3 = x 2 y 2 o 2 0 1 0 x 3 y 3 o 3 0 0 1 1 0 0 1 0 0 0 0 1

Potok przeksztaªce«viewing pipeline macierz VP Caªo± przeksztaªce«od modelu opisanego w 3D do jego obrazu umiesczonego w oknie urzadzenia opisuje przeksztaªcenie macierzowe (we wspóªrz dnych jednorodnych): VP = DC VC M

OBRAZKI Potok przeksztaªce«viewing pipeline

Krzywe 6 Krzywe Reprezentacje krzywych Renderowanie krzywej

Krzywe Reprezentacje krzywych Posta parametryczna: γ(t) = (x(t), y(t)) lub γ(t) = (x(t), y(t), z(t)) Jedna krzywa ma równe przedstawienia parametryczne, np: γ 1 (t) = (cos(t), sin(t)) γ 2 (t) = (t, 1 t 2 ) γ 3 (t) = ( ) 1 t 2 1 + t 2, 2t 1 + t 2 opisuj okr g (w odpowiedniej dziedzinie)

Krzywe Reprezentacje krzywych jawna, nieparametryczna: y = f(x) lub x = g(y) lub z = f(x), y = g(x) uwikªana: F (x, y) = 0 lub F (x, y, z) = 0, G(x, y, z) = 0

Krzywe Reprezentacje krzywych Teoretycznie (z tw. o f-cji uwikªanej) wszystkie te postacie s równowa»ne. W praktyce nie. Wzgl dnie ªatwo rysowa krzyw parametryczn, pozostaªe rodzaje s trudne do rysowania. Dla prostych (odcinków), okr gów (ªuków) i elips istniej wydajne algorytmy rysuj ce (z antyaliasingiem!)

Krzywe Renderowanie krzywej Stosujemy metod poª cz kropki 3.5 3.0 2.5 2.0 1.5 1.0 0.5-1.0-0.5 0.5 1.0

1.0 1.0 0.5 0.5-1.0-0.5 0.5 1.0-1.0-0.5 0.5 1.0-0.5-0.5-1.0-1.0 1.0 1.0 0.5 0.5-1.0-0.5 0.5 1.0-1.0-0.5 0.5 1.0-0.5-0.5-1.0-1.0

Krzywe Renderowanie krzywej Problem wynika z ró»nej i nie staªej pr dko±ci krzywych. Zawsze istnieje mo»liwo± przeparametryzowania krzywej tak aby miaªa pr dko± jednostkow. Jawne wzory zwykle nie istniej, a numerycznie jest to zªo»one.

Krzywe Bezier 7 Krzywe Bezier Denicja Wªasno±ci Algorytm Castelajau Podziaª krzywej Renderowanie krzywej Bezier Morphing Piecewise Bezier Punkt przeci cia

Krzywe Bezier Denicja Krzywa Bezier o n + 1 punktach kontrolnych b 0,..., b n R 2 B(t) = n b i B i,n (t), t [0, 1] i=0 gdzie {( n ) B i,n (t) = i (1 t) n i t i 0 i n 0 else Wielok t b 0, b 1,..., b n nazywamy wielok tem kontrolnym (control polygon).

Krzywe Bezier Denicja Krzywe niskich stopni liniowa: kwadratowa: 3-go stopnia: B(t) = b 0 (1 t) + b 1 t B(t) = b 0 (1 t) 2 + b 1 2(1 t)t + b 2 t 2 B(t) = b 0 (1 t) 3 + b 1 3(1 t) 2 t + b 2 3(1 t)t 2 + b 3 t 3

Krzywe Bezier Wªasno±ci B(0) = b 0 oraz B(1) = b n B (0) = n(b 1 b 0 ) oraz B (1) = n(b n b n 1 ) Krzywa Bezier jest zawarta w otoczce wypukªej zbioru punktów kontrolnych. Dla dowolnego przeksztaªcenia anicznego L L(B(t)) = n L(b i )B i,n (t) i=0 Liczba samoprzeci krzywej nie przekracza liczby przeciec krzywej z wielok tem kontrolnym. Je»eli punkty kontrolne le» na prostej, to krzywa te» le»y na prostej. Ka»dy wielomian mo»na przedstawi jako krzyw Bezier

Krzywe Bezier Algorytm Castelajau Algorytm Castelajau Dla krzywej B o punktach kontrolnych b 0,..., b n zachodzi j = 1,..., n, i = 0,..., n j B(t) = b n 0 { b 0 i = b i b j i = bj 1 i (1 t) + b j 1 i+1 t

Krzywe Bezier Algorytm Castelajau b j i = bj 1 i (1 t) + b j 1 i+1 t b 0 0 b 0 1 b 0 2... b 0 n 1 b 0 n b 1 0 b 1 1 b 1 2... b 1 n 1. b n 2 0 b n 2 1 b n 2 2 b n 1 0 b n 1 1 b n 0

Krzywe Bezier Podziaª krzywej Wybran krzyw Bezier dzielimy na dwie cz ±ci poprzez wybranie warto±ci parametru t = α. Otrzymujemy dwie krzywe lew i praw okre±lone na [0, α] i [α, 0]. S to krzywe Bezier bo s to wielomiany. Jakie s ich punkty kontrolne?

Krzywe Bezier Podziaª krzywej Wybran krzyw Bezier dzielimy na dwie cz ±ci poprzez wybranie warto±ci parametru t = α. Otrzymujemy dwie krzywe lew i praw okre±lone na [0, α] i [α, 0]. S to krzywe Bezier bo s to wielomiany. Jakie s ich punkty kontrolne? Odpowied¹: lewej b 0 0, b1 0,..., bn 0 prawej b n 0, bn 1 1,..., b 0 n

Krzywe Bezier Renderowanie krzywej Bezier Aby narysowac krzyw Bezier 1 Podziel j na dwie krzywe w punkcie t = 1 2 2 Je»eli lewa jest prawie liniowa, to id¹ do punktu 3, w przeciwnym wypadku idz do 1. Podobnie dla prawej 3 Narysuj control polygon Krzywa jest prawie liniowa je»eli jej control polygon mie±ci si w w skim (ε-szerokim) prostok cie. Oznacza to,»e punkty kontrolne sa prawie wspóªliniowe.

Obrazki Krzywe Bezier Morphing

Krzywe Bezier Piecewise Bezier Dla krzywych Bezier wysokiego stopnia, jest maª zale»no± pomiedzy ksztaªtem a wielok tem kontrolnym. Dlatego wprowadza si krzyw kawaªkami Bezier na odcinku [a, b], a = t 0 < t 1 < < t K = b B k (t) = n t t k b i B i,n ( ), t [t k, t k+1 ] t k+1 t k i=0

Krzywe Bezier Punkt przeci cia Przeci cie z prost 1 Sprawd¹ czy prosta przecina otoczk wypukªa punktów kontrolnych. Je»eli tak idz do 2., w przeciwnym wypadku brak przeci cia. 2 Sprawd¹ czy krzywa jest prawie liniowa. Je»eli tak to idz do 3., w przeciwnym wypadku podziel krzyw na póª i zastosuj 1. do ka»dego kawaªka. 3 Skoro jest prawie liniowa, przybli» j odcinkiem i znajd¹ punkt przeci cia tego odcinka z prost.

Krzywe Bezier Punkt przeci cia Aby sprawdzi czy prosta ax + by + c przecina otoczk wypukª punktów (x i, y i ) wystarczy sprawdzi czy wyra»enie ax i + by i + c ma staªy znak. Je»eli nie, to prosta przecina otoczk wypukª.

Krzywe Bezier Punkt przeci cia Przeci cie dwóch krzywych 1 Sprawd¹ czy otoczki wypukªe punktów kontrolnych przecinaj si. Je»eli tak idz do 2., w przeciwnym wypadku brak przeci cia. 2 Sprawd¹ czy krzywe s prawie liniowe. Je»eli tak to idz do 3., w przeciwnym wypadku podziel ka»d krzyw na póª i zastosuj 1. do ka»dej pary kawaªków. 3 Skoro krzywe s prawie liniowe, to przybli» je odcinkami i znajd¹ ich punkty przeci cia.

Krzywe Bezier Punkt przeci cia O czym jeszcze mo»na powiedzie? Krzywe przestrzenne. Konwersja wielomian <> krzywa Bezier. Krzywe zamkni te. Jak uzyska okr g, elips i hiperbol. Reprezentacja krzywych Bezier we wspóªrz dnych jednorodnych. Dla matematyków: wªasno±ci analityczne. Zastosowanie w interpolacji.

8 B-spline Denicja Wªasno±ci NURBS'y B-splines

B-spline Denicja Ustalamy 1 stopie«d >= 0 2 wektor w zªów t 0... t d = a t m d = b t m 3 punkty kontrolne b 0,..., b n Deniujemy B-spline stopnia d o punktach kontrolnych b i i w zªach t i okre±lony na [a, b] B(t) = n b i N i,d (t) i=0

B-spline Denicja Baza bisplajnów stopnia d zdeniowan przez w zªy t d t m d N i,d (t) = { 1 t [t i, t i+1 ] N i,0 (t) = 0 otherwise t t i t i+d ti N i,d 1(t) + t i+d+1 t t i+d+1 ti + 1 N i,d 1(t)

{0, 0, 1, 2, 4, 5, 7, 7, 8, 10 } {1, 1, 2, 4, 4, 5, 6, 8, 9, 9} {1, 3, 3, 3, 4, 4, 7, 7, 8, 10 } {1, 2, 3, 4, 5, 5, 7, 8, 9, 10 } {1, 1, 2, 5, 6, 6, 7, 8, 9, 9} {0, 0, 0, 0, 1, 1, 6, 8, 8, 9} {2, 3, 3, 3, 6, 6, 7, 8, 9, 10 } {1, 2, 2, 5, 6, 7, 9, 10, 10, 10 } {0, 2, 3, 3, 4, 5, 6, 7, 8, 9}

B-spline Wªasno±ci 1 Wªasno± otoczki wypukªej 2 Niezmieniczo± wzgl dem przeksztaªce«anicznych 3 Gªadko± : równa stopniowi w zªa 4 Lokalno± : Je»eli t [t r, t r+1 ], to B(t) = d i=r d b i N i,d (t) 5 Nie interpoluje punktów b 0 i b n, ale mo»liwa jest modykacja 6 Do rysowania sªu»y algorytm de Boor'a, podobny do algorytmu Casteljau

B-spline NURBS'y NURBS = Non-uniform rational B-spline Dodatkowo mamy wektor wag w = (w 0,..., w n ) B(t) = n i=0 w i b i N i,d (t) n i=0 w i N i,d (t) = n i=0 b i w i N i,d (t) wi N i,d (t)

wi ksza waga punktu = punkt mocniej przyci ga krzyw

Powierzchnie 9 Powierzchnie Reprezentacje powierzchni Renderowanie powierzchni Powierzchnie Bezier i B-splain Ró»ne konstrukcje

Powierzchnie Reprezentacje powierzchni Posta uwikªana: {(x, y, z) R 3 : F (x, y, z) = 0}, F : R 3 R np.: pªaszczyzna: ax + by + cz + d = 0, sfera: x 2 + y 2 + z 2 1 = 0, torus: (x 2 + y 2 + z 2 + R 2 r 2 ) 2 4R 2 (x 2 + y 2 ) serduszko: (x 2 + 9 4 y2 + z 2 1) 3 x 2 z 3 9 80 y2 z 3 = 0

Powierzchnie Reprezentacje powierzchni Posta parametryczna: S(s, t) = (x(s, t), y(s, t), z(s, t)), S : R 2 U R 3 np.: pªaszczyzna: S(s, t) = R + sv + tu sfera: S(s, t) = (r cos s sin t, r sin s sin t, r cos t) torus: S(s, t) = ((c + a cos v) cos u, (c + a cos v) sin u, a sin v) powierzchnia obrotowa: S(s, t) = (t cos s, t sin s, f(t))

Powierzchnie Renderowanie powierzchni Podstawowa metoda: narysowa kropki i poª czy je w trójk ty/kwadraty.

Powierzchnie Powierzchnie Bezier i B-splain Bezier S(s, t) = B-splain n i m p i,j B i,n (s)b j,m (t), (s, t) [0, 1] [0, 1] j S(s, t) = NURBS n i m p i,j N i,e (s)n j,d (t), (s, t) [s d, s d ] [t e, t e] j S(s, t) = n m i j n m i j w i,jp i,j N i,e (s)n j,d (t) w, (s, t) [s d, s d i,jn i,e (s)n j,d (t) ] [t e, t e]

Powierzchnie Powierzchnie Bezier i B-splain Wªasno±ci powierzchni sa analogiczne do wªasno±ci krzywych: interpolacja w zªów ko«cowych dla Bezier lokalno± na B-spline niezmienniczo± wzgl dem przeksztaªce«anicznych algorytmy

OBRAZKI Powierzchnie Ró»ne konstrukcje

Rendering 10 Rendering Kolor O±wietlenie Model o±wietlenia Shading Shadow Podsumowanie

Rendering Kolor Barwa to kombinacja efektów zycznych, dªugo±c fali promieniowania elektromagnetycznego zjologicznych, budowa oka (lub analogicznego organu) psychicznych, wra»enie wywoªywane w mózgu podczas percepcji tej fali Odczucie to jest indywidualne, zale»ne od cech osobniczych i wielu innych czynników.

Rendering Kolor Barwy podstawowe w malarstwie: RedYellowBlue ródªo: wikipedia.pl

Rendering Kolor Barwy podstawowe w grace komputerowej (technice cyfrowej): RedGreenBlue ródªo: wikipedia.pl

Rendering Kolor Barwy podstawowe w poligrai: CyanMagentaYellow (K)Black ródªo: wikipedia.pl

Rendering Kolor Problemem i przedmiotem intensywnych bada«byªo odwzorowania kolorów pomi dzy obrazami widzianymi na»ywo wydrukowanymi wy±wietlanymi na ekranie stworzonymi w komputerze itd. Obejmuje to zagadnienia z zyki, zjologii, chemii, elektrotechniki...

Rendering Kolor Dla przykªadu (np.: JPEG, MPEG, ComponentVideo): Oko ludzkie jest mniej wra»liwe na kolor ni» na jasno±. Dlatego w transmisji/kompresji obrazów nie przechowuje si informacji o kolorach (RGB). Przechowuje si informacj o luminacji Y ( jasno±ci) oraz skªadowych (chrominancji) C B = Y B, C R = Y R Skªadowe C B, C R próbkuje si z mniejsz rozdzielczo±ci ni» Y, co pozwala na oszcz dno± pasma transmisji (ilo±c danych). Jest to kompresja stratna.

Rendering Kolor Trzeba mie na uwadze,»e kolorów z komputera nie da si odwzorowa na kolory na papierze. Opracowywane s ró»ne palety kolorów Adobe, PANTONE. Standardy ISO, opisujace warunki zyczne w których mo»na porównywa kolory. Problem jest zuwa»alny w przypadku DTP, w przypadku fotograi cyfrowej mniej (poniewa» jest powszechna)

Rendering Kolor Poj cia z którymi wypadaªoby si zapozna barwa podstawowa/czysta barwa pochodna odcie«nasycenie koªo barw przestrze«barw model kolorów

Rendering Kolor Model kolorów: RGB, HueSaturationValue, CMYK > patrz dowolny program graczny, np.: GIMP

Rendering O±wietlenie Problem o±wietlenia w grace komputerowej: W realistyczny sposób odda efekt o±wietlenia obiektu/sceny przez ¹ródªa ±witªa.

Rendering O±wietlenie ródªa ±wiatªa w rzeczywisto±ci bezpo±rednie: sªo«ce,»arówki itd. wtórne: lustra, ±ciany, Tego typu ¹ródªa daj ±wiatªo rozproszone, ±wiatªo jest emitowane przez pewn powierzchnie.

Rendering O±wietlenie W grace (lub w szkolnej zyce) traktujemy np.:»arówki, jako punktowe ¹ródªo ±wiatªa. Wtedy promienie ±wiatªa tworz sto»ek o wierzchoªku w ¹ródle. Je»eli ¹ródªo swiatªa jest umieszczone w niesko«czono±ci (w praktyce: daleko) lub jest maªe (relatywnie do sceny) to promienie ±wiatªa traktujemy jako równolegªe. W praktyce: sªo«ce (±wiatªo sªoneczne) Takie ¹ródªo traktujemy jako kierunkowe Innym przykªadem jest reektor (paraboliczny)

Rendering O±wietlenie Niektóre zjawiska zyczne uwzgl dniane w grace komputerowej odbicie zaªamanie absorbcja/pochªanianie rozpraszanie W praktyce wszystkie te zjawiska zachodz jednocze±nie, ich wpªyw na o±wietlenie zale»y od wªasno±ci materiaªu z którego jest zbudowany obiekt. Aby odda efekt o±wietlenia nale»y nada obiektowi cechy zyczne.

Rendering O±wietlenie Jedno punktowe ¹ródªa ±wiatªa jest nierealistyczne wiatªo przechodz przez powietrze podlega rozproszeniu. Swiatªo odbijaj c si od obiektów tworzy nowe ¹ródªa swiatªa Aby zasymulowa te efekty nale»aªoby prze±ledzi DU O promieni ±wietlnych. Wprowadza sie o±wietlenie tªa (ambient) na które skªadaj si efekty rozpraszania i odbicia

OBRAZKI Rendering O±wietlenie

Rendering Model o±wietlenia Prawa zyczne: 1 K t padania θ jest równy katowi odbicia. 2 Promie«padaj cy L, odbity R i wektor normalny N le» w tej samej pªaszczy¹nie.

Rendering Model o±wietlenia

Rendering Model o±wietlenia Diuse (Prawo Lamberta) Intensywno± ±wiatªa w kierunku v jest proporcjonalna do kosinusa k ta pomi dzy wektorami v i normalnym do powierzchni. I D = I d R d (N L) gdzie I d - intensywno± ±wiatªa padaj cego R d - wspóªczynnik odbicia Kolor swiatªa odbitego jest wypadkow koloru ±wiatªa padaj cego i koloru powierzchni. Zachodzi dla matowych materiaªów

Rendering Model o±wietlenia Specular Model Phonga (jeden z wielu): I S = I s R s (θ) cos m α = I s R s (θ)(v R) m gdzie R s (θ), m - wspóªczynniki odpowiadaj ce wªasno±ciom zycznym mteriaªu α - k t jaki tworzy promie«swiatªa odbitego R z kierunkiem z którego patrzy obserwator V Kolor ±wiatªa odbitego jest taki sam jak ±wiatªa padaj cego. Zachodzi dla bªyszcz cych materiaªów.

Rendering Model o±wietlenia Ambient Odpowiada za sumaryczne ±wiatªo pochodz ce ze sceny (¹ródªa, odbicia). Bardzo trudny do zasymulowania. Model praktyczny: I A = I a R a Kolor ±wiatªa odbitego taki jest wypadkow koloru ±wiatªa padaj cego i koloru obiektu.

Rendering Model o±wietlenia Attenuation Obiekty le»ace dalej od ¹ródªa ±wiatªa s gorzej o±wietlone, aby zasymulowa ten efekt dodaje sie wspóªczynnnik att(d) I D = att(d)r d (N L) I S = att(d)r s (N R) m Fizycznie (tªumienie) at(d) = 1/d 2, jednak w praktyce u»ywa si att(d) = 1 ad 2 + bd + c Dobór wspóªczynników zale»y od modelu

Rendering Model o±wietlenia Peªny model o±wietlenia I = I a R a + att(d) i (R d (N L i ) + R s (N R i ) m ) gdzie summujemy po wszystkich ¹ródªach ±wiatªa. Kolor W praktyce oblicza sie intensywno± ka»dej skªadowej w uzywanym modelu kolorów np.: I red, I green, I blue.

OBRAZKI Rendering Model o±wietlenia

Rendering Shading Powy»szy model o±wietlenia powinien by zastosowany do ka»dego piksela. Teoretycznie jest to proste: tylko wyliczy wektor normalny i podstawi do wzoru

Rendering Shading Powy»szy model o±wietlenia powinien by zastosowany do ka»dego piksela. Teoretycznie jest to proste: tylko wyliczy wektor normalny i podstawi do wzoru W praktyce jest to niewykonalne w sensowny sposób. Wprowadza si ró»ne uproszczenia w modelu lub w geometrii obiektu

Rendering Shading Zaªo»enia: powierzchnia dana parametrycznie S = S(u, v) siatka punktów P i,j = S(u i, v j ) W najprostszych modelach siatka jest jednorodna, w bardziej skomplikowanych uwzgl dnia krzywizn powierzchni. Punkty P i,j tworz ±ciany (facets), zywkle czworok ty lub trójk ty,

Rendering Shading Flat shading Ka»dy wielok t jest o±wietlony równomiernie. zalety: wystarczy obliczy oswietlenie jeden raz dla ka»dego wielok ta wady: ±ciany wyra¹nie widoczne, dodanie wiekszej ilosci ±cian redukuje zarówno zalety i wady

Rendering Shading Gouraud shading Dla danego tójk ta ABC, wyliczamy o±wietlenie tylko w jego wierzchoªkach i ustalmy pewn prost (kierunek) l Dla punktów P = (1 s)a + sb, Q = (1 t)a + tc: I P = (1 s)i A + si B, I Q = (1 t)a + tc Dla dowolnego punktu L trójkata, prosta równolegªa do l, przechodz ca przez L przecina boki AB i AC w punktach P i Q Wtedy L = (1 u)p + uq oraz I L = (1 u)i P + ui Q

Rendering Shading zalety: nadal maªo oblicze«, bardziej realistyczne odwzorowanie wady: nadal widoczne kraw dzie ±cian Algorytm mo»na ulepszy wprowadzaj c u±rednienia warto±ci w wierzchoªkach i na kraw dziach.

Rendering Shading Phong shading Zamiast interpolowa intensywno± ±wiatªa, interpoluje sie wektor normalny. Metoda jest taka jak w modelu Gouraud. zalety: bardzo realistyczne efekty wady: wymaga wiekszej ilo±ci oblicze«

Rendering Shadow Cie«powstaje jako efekt zablokowania promieni ±wiatªa przez przeszkod. Jest widoczny (!) gdy wpªyw oswietlenia tªa jest mniejszy ni» ¹ródªa (¹ródeª) zasadniczym algorytmem rysowania cienia jest okre±lenie czy dany wielok t rzuca cie«a je»eli tak to gdzie i zastosowanie rzutowania Jest to zagadnienie bardzo zªo»one obliczeniowo.

Rendering Podsumowanie Podsumowanie Mimo prostej matematyki, problem o±wietlenia/cieniowania/cienia jest zªo»ony obliczeniowo. Obecnie jest w znacznej cze±ci realizowane przez kart graczn. W programach gracznych, rola uzytkownika/programisty jest najcz sciej ograniczona do okre±lenia parametrów. Dobrze jest jednak rozumie zagadnienie w ogólnym zarysie Podczas r cznego programowania, zwykle korzystamy z wielu udogodnie«odstarczanych przez bibliotek graczn - shadery

Rendering Podsumowanie O±wietlenie/cieniowanie/cie«to nic innego ni» odpowiednio obliczony kolor punktu modelu i sceny! Niemniej, ilo± oblicze«oraz ich zªo»ono± zasªuguje na respekt. Obecnie jest to mniej lub bardziej standardowe.

Geometria obliczeniowa 11 Geometria Obliczeniowa Co to jest? Motywacja

Geometria Obliczeniowa Co to jest? Geometria oblczeniowa zajmuje si projektowaniem analiz aplikacj algorytmów o naturze geometrycznej.

Geometria Obliczeniowa Co to jest? Typowe problemy geometryczne: closest pair of points - w zbiorze punktów znale¹ dwa najbli»sze

Geometria Obliczeniowa Co to jest? Typowe problemy geometryczne: closest pair of points - w zbiorze punktów znale¹ dwa najbli»sze lines (segments) intersection - w zbiorze prostych (odcinków) znale¹ punkty przeci cia

Geometria Obliczeniowa Co to jest? Typowe problemy geometryczne: closest pair of points - w zbiorze punktów znale¹ dwa najbli»sze lines (segments) intersection - w zbiorze prostych (odcinków) znale¹ punkty przeci cia convex hull - wyznaczy otoczk wypukª zbioru punktów

Geometria Obliczeniowa Co to jest? Typowe problemy geometryczne: closest pair of points - w zbiorze punktów znale¹ dwa najbli»sze lines (segments) intersection - w zbiorze prostych (odcinków) znale¹ punkty przeci cia convex hull - wyznaczy otoczk wypukª zbioru punktów triangulation, mesh generation - podzieli dany ksztaªt na trójk ty

Geometria Obliczeniowa Co to jest? Typowe problemy geometryczne: closest pair of points - w zbiorze punktów znale¹ dwa najbli»sze lines (segments) intersection - w zbiorze prostych (odcinków) znale¹ punkty przeci cia convex hull - wyznaczy otoczk wypukª zbioru punktów triangulation, mesh generation - podzieli dany ksztaªt na trójk ty operations on polygons - sumy, iloczyny, wyci gni cia itd...

Geometria Obliczeniowa Co to jest? Typowe problemy typu geometrycznego: range searching - znale¹ punkty nale» ce do dane zbioru

Geometria Obliczeniowa Co to jest? Typowe problemy typu geometrycznego: range searching - znale¹ punkty nale» ce do dane zbioru point in polygon - stwierdzi czy punkt nalezy do danego wielok ta

Geometria Obliczeniowa Co to jest? Typowe problemy typu geometrycznego: range searching - znale¹ punkty nale» ce do dane zbioru point in polygon - stwierdzi czy punkt nalezy do danego wielok ta point location - stwierdzi w którym elemencie siatki znajduje si dany punkty

Geometria Obliczeniowa Co to jest? Typowe problemy typu geometrycznego: range searching - znale¹ punkty nale» ce do dane zbioru point in polygon - stwierdzi czy punkt nalezy do danego wielok ta point location - stwierdzi w którym elemencie siatki znajduje si dany punkty ray tracing - stwierdzi które z obiektów jest przecianne przez prost

Geometria Obliczeniowa Co to jest? Typowe problemy typu geometrycznego: range searching - znale¹ punkty nale» ce do dane zbioru point in polygon - stwierdzi czy punkt nalezy do danego wielok ta point location - stwierdzi w którym elemencie siatki znajduje si dany punkty ray tracing - stwierdzi które z obiektów jest przecianne przez prost nearest neighbour - z podanego zbioru poda punkt le»acy najbli»ej wybranego

Geometria Obliczeniowa Co to jest? Bezpo±rednio zwiazane zagadnienia: opracowanie algorytmów: o mo»liwie niskiej zªo»ono±ci, odpornych na przypadki zdegenerowane, odpornych na bª dy zaokr gle«

Geometria Obliczeniowa Co to jest? Bezpo±rednio zwiazane zagadnienia: opracowanie algorytmów: o mo»liwie niskiej zªo»ono±ci, odpornych na przypadki zdegenerowane, odpornych na bª dy zaokr gle«opracowanie wydajnych struktur danych (niski czas dost pu, ªatwo± wyszukiwania, ª two± dodawania i usuwania elementów...)

Geometria Obliczeniowa Co to jest? Bezpo±rednio zwiazane zagadnienia: opracowanie algorytmów: o mo»liwie niskiej zªo»ono±ci, odpornych na przypadki zdegenerowane, odpornych na bª dy zaokr gle«opracowanie wydajnych struktur danych (niski czas dost pu, ªatwo± wyszukiwania, ª two± dodawania i usuwania elementów...) Osobnym problemem jest zaprojektowanie algorytmów i struktur danych w taki sposób aby dziaªaªy wydajnie w sytuacji dynamicznej, np.: ci gªego dodawania lub usuwania punktów.

Geometria Obliczeniowa Motywacja 1 Mamy dan map z zaznaczonynymi punktami (np.: stacje benzynowe albo toalety). Znale» najbli»szy punkt

Geometria Obliczeniowa Motywacja 1 Mamy dan map z zaznaczonynymi punktami (np.: stacje benzynowe albo toalety). Znale» najbli»szy punkt 2 Mamy dan map z zaznaczonym punktem i przeszkodami (np.: ulice, ±ciany). Znale¹ drog (najkrótsz ) prowadz c do tego puntktu, omijaj c przeszkody..

Geometria Obliczeniowa Motywacja 1 Mamy dan map z zaznaczonynymi punktami (np.: stacje benzynowe albo toalety). Znale» najbli»szy punkt 2 Mamy dan map z zaznaczonym punktem i przeszkodami (np.: ulice, ±ciany). Znale¹ drog (najkrótsz ) prowadz c do tego puntktu, omijaj c przeszkody.. 3 Mamy dwie mapy j.w. Znale¹ najkrótsz droge do najbli»szego punktu.

Geometria Obliczeniowa Motywacja 1 Mamy dwa obiekty geometryczne (np.: samochody). Stwierdzi czy si przecinaj.

Geometria Obliczeniowa Motywacja 1 Mamy dwa obiekty geometryczne (np.: samochody). Stwierdzi czy si przecinaj. 2 Mamy dane obiekty geometryczne. Stwierdzi które z nich s bli»ej a które dalej.

Geometria Obliczeniowa Motywacja 1 Mamy dwa obiekty geometryczne (np.: samochody). Stwierdzi czy si przecinaj. 2 Mamy dane obiekty geometryczne. Stwierdzi które z nich s bli»ej a które dalej. 3 Mamy dane obiekty geometryczne i prost (promie«swiatªa). Stwierdzi które z nich sa przecinane przez prost.

Geometria Obliczeniowa Motywacja 1 Mamy dany zbiór danych i jego podzbiór opisany przez pewne warunki (np.: nierówno±ci, warunki wyszukiwania). Znale¹ punkty nale» ce do tego podzbioru.

Geometria Obliczeniowa Motywacja 1 Mamy dany zbiór danych i jego podzbiór opisany przez pewne warunki (np.: nierówno±ci, warunki wyszukiwania). Znale¹ punkty nale» ce do tego podzbioru. 2 Mamy dane podzbiory (np.: map powiatów i map opadów) i punkty (np.: miasta). Znale¹ punkty nale»ace do wybranych podzbiorów.

Geometria Obliczeniowa Motywacja 1 Mamy dany zbiór danych i jego podzbiór opisany przez pewne warunki (np.: nierówno±ci, warunki wyszukiwania). Znale¹ punkty nale» ce do tego podzbioru. 2 Mamy dane podzbiory (np.: map powiatów i map opadów) i punkty (np.: miasta). Znale¹ punkty nale»ace do wybranych podzbiorów. 3 Mamy dwie mapy (np.: drogi i rzeki). Znale¹ punkty wspólne obu map.

Geometria Obliczeniowa Motywacja 1 Mamy dany zbiór danych i jego podzbiór opisany przez pewne warunki (np.: nierówno±ci, warunki wyszukiwania). Znale¹ punkty nale» ce do tego podzbioru. 2 Mamy dane podzbiory (np.: map powiatów i map opadów) i punkty (np.: miasta). Znale¹ punkty nale»ace do wybranych podzbiorów. 3 Mamy dwie mapy (np.: drogi i rzeki). Znale¹ punkty wspólne obu map. 4 Mamy zbiór obiektów geometrycznych i ¹ródªo ±wiatªa. Znale¹ obiekty o±wietlone, a dokªadniej o±wietlone sciany.

Geometria Obliczeniowa Motywacja Na rozwiazanie problemu natury geometrycznej (i ka»dego innego) skªada si : 1 Zrozumienie natury problemu, jego wªasno±ci geometrycznych.. 2 Zaprojektowanie algorytmów i struktur danych. 3 Optymalizacja zªo»ono±ci. 4 Analiza przypadków zdegenerowanych. 5 Analiza stabilno±ci.

Geometria Obliczeniowa Motywacja Informatyka Nawet perfekcyjne zrozumienie natury problemu, bez prawidªowego zastosowania technik algorytmicznych, nie pozwoli rozwiazac problemu efektywnie.

Geometria Obliczeniowa Motywacja Informatyka Nawet perfekcyjne zrozumienie natury problemu, bez prawidªowego zastosowania technik algorytmicznych, nie pozwoli rozwiazac problemu efektywnie. Matematyka Nawet perfekcyjne opanowanie technik programistycznych, bez zrozumienia natury geometrycznej problemu, nie pozwoli rozwi zac problemu wydajnie.

Geometria obliczeniowa 12 Otoczka wypukªa na pªaszczy¹nie Sformuªowanie problemu Analiza problemu Algorytm naiwny Lepszy algorytm Inne algorytmy

Otoczka wypukªa na pªaszczy¹nie Sformuªowanie problemu Zadanie Dla danych punktów na pªaszczy¹nie: p 1,..., p n, znale¹ otoczk wypukª zbioru tych punktów.

Otoczka wypukªa na pªaszczy¹nie Sformuªowanie problemu Zadanie Dla danych punktów na pªaszczy¹nie: p 1,..., p n, znale¹ otoczk wypukª zbioru tych punktów. Denicje 1 Zbiór P nazywamy wypukªym, je»eli wraz z ka»d par punktów p, q P, do zbioru nale»y odcinek pq 2 Otoczk wypukªa (ang. convex hull) zbioru P nazywamy najmniejszy zbiór wypukªy zawieraj cy zbiór P. Oznaczenie CH(P ). Otoczka wypukªa to cz ± wspólna wszystkich zbiorów wypukªych zawieraj cych P.

Otoczka wypukªa na pªaszczy¹nie Sformuªowanie problemu 11 1 11 1 10 5 4 12 2 8 13 9 6 7 3 10 5 9 6 7 3

Otoczka wypukªa na pªaszczy¹nie Analiza problemu Denicja otoczki wypukªej jest nieprzydatna, musimy znale¹ charakteryzacj. Otoczk wypukª mo»emy sobie wyobrazi jako gumk recepturk rozpi t na zbiorze.

Otoczka wypukªa na pªaszczy¹nie Analiza problemu Denicja otoczki wypukªej jest nieprzydatna, musimy znale¹ charakteryzacj. Otoczk wypukª mo»emy sobie wyobrazi jako gumk recepturk rozpi t na zbiorze. Charakteryzacja: Otoczka wypukªa zbioru P to wielok t, którego wierzchoªkami s punkty ze zbioru P, zawieraj cy wszystkie punkty P. Jest on wyznaczony jednoznacznie.

Otoczka wypukªa na pªaszczy¹nie Analiza problemu Jak opisa wielok t? Wielok t opisujemy jako list wierzchoªków, wypisanych w kolejno±ci zgodnej z ruchem wskazówek zegara (zaczynaj c od dowolnego wierzchoªka).

Otoczka wypukªa na pªaszczy¹nie Analiza problemu Jak opisa wielok t? Wielok t opisujemy jako list wierzchoªków, wypisanych w kolejno±ci zgodnej z ruchem wskazówek zegara (zaczynaj c od dowolnego wierzchoªka). Przeformuªowanie problemu Dla danej listy punktów P na pªaszczy¹nie wyznaczy list tych elementów które s wierzchoªkami CH(P ) w kolejno±ci CW.

Otoczka wypukªa na pªaszczy¹nie Analiza problemu 2 8 3 4 13 1 7 11 5 9 10 6 12

Otoczka wypukªa na pªaszczy¹nie Analiza problemu Obserwacja 1 Rozwa»my dwa kolejne wierzchoªki p, q P wielok ta CH(P ) oraz kraw d¹ (skierowan ) pq. Wszystkie punkty zbioru P le» po prawej stronie prostej (skierowanej) pq Obserwacja 2 Je»eli wszystkie punkty zbioru P \ {p, q} le» po prawej stronie prostej (skierowanej) pq, to pq jest kraw dzi CH(P ).

Algorytm 1 NaiveConvexHull(P) Input: P - zbiór punktów na pªaszczy¹nie Output: L - lista wierzchoªków wielok ta CH(P ) 1: E 2: for all p, q P do 3: valid true 4: for all r P, r p, q do 5: if r le»y po prawej stronie prostej pq then valid false 6: end if 7: if valid then dodaj kraw d¹ pq do E 8: end if 9: end for 10: end for 11: ze zbioru kraw dzi E, utwórz list L wierzchoªków CH(P )

Otoczka wypukªa na pªaszczy¹nie Algorytm naiwny Dwa dodatkowe problemy wiczenia Napisa algorytmy: 5: sprawdzaj cy, czy punkt le»y po prawej stronie prostej 11: przetwarzaj cy list kraw dzi na list wierzchoªków

Otoczka wypukªa na pªaszczy¹nie Algorytm naiwny Du»a zªo»ono± obliczeniowa Algorytm naiwny ma zªo»ono± obliczeniow O(n 3 ), gdzie n - liczba wierzchoªków. Zbyt du» dla zastosowa«, poza maªymi zbiorami.

Otoczka wypukªa na pªaszczy¹nie Algorytm naiwny Du»a zªo»ono± obliczeniowa Algorytm naiwny ma zªo»ono± obliczeniow O(n 3 ), gdzie n - liczba wierzchoªków. Zbyt du» dla zastosowa«, poza maªymi zbiorami. Nie zawsze dziaªa poprawnie W przypadku zdegenerowanym - punkty wspóªliniowe - algorytm dziaªa niepoprawnie. Je»eli punkty p, q, r s wspóªliniowe, to nie dodaje kraw dzi.

Otoczka wypukªa na pªaszczy¹nie Algorytm naiwny Du»a zªo»ono± obliczeniowa Algorytm naiwny ma zªo»ono± obliczeniow O(n 3 ), gdzie n - liczba wierzchoªków. Zbyt du» dla zastosowa«, poza maªymi zbiorami. Nie zawsze dziaªa poprawnie W przypadku zdegenerowanym - punkty wspóªliniowe - algorytm dziaªa niepoprawnie. Je»eli punkty p, q, r s wspóªliniowe, to nie dodaje kraw dzi. Nie jest stabilny numerycznie Je»eli punkty s prawie, prawie, ale to prawie wspóªliniowe, to w bª dy zaokr gle«mog spowodowa nieprzewidywalne zachowanie

Otoczka wypukªa na pªaszczy¹nie Algorytm naiwny Du»a zªo»ono± obliczeniowa Algorytm naiwny ma zªo»ono± obliczeniow O(n 3 ), gdzie n - liczba wierzchoªków. Zbyt du» dla zastosowa«, poza maªymi zbiorami. Nie zawsze dziaªa poprawnie W przypadku zdegenerowanym - punkty wspóªliniowe - algorytm dziaªa niepoprawnie. Je»eli punkty p, q, r s wspóªliniowe, to nie dodaje kraw dzi. Nie jest stabilny numerycznie Je»eli punkty s prawie, prawie, ale to prawie wspóªliniowe, to w bª dy zaokr gle«mog spowodowa nieprzewidywalne zachowanie Epic fail! Epic fail! Epic fail! Epic fail! Epic fail! Epic fail!

Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Zastosujemy podej±cie przyrostowe - wyznaczymy CH(P ) dodaj c po jednym punkcie, za ka»dym razem aktualizuj c rozwi zanie. Na pocz tek sortujemy punkty wzgl dem pierwszej wspóªrz dnej. Na pocz tek wyznaczymy górn kraw d¹ zaczynaj c od najbardziej lewego punktu ko«cz c na najbardziej prawym Potem wyznaczymy doln kraw d¹, przechodz c w przeciwnym kierunku.

Podstawowy krok: Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Zaªó»my,»e wyznaczyli±my górna kraw d¹ L up dla dla punktów p 1,..., p i 1. Dodajemy kolejny punkt p i.

Podstawowy krok: Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Zaªó»my,»e wyznaczyli±my górna kraw d¹ L up dla dla punktów p 1,..., p i 1. Dodajemy kolejny punkt p i. Obserwacja 1: poruszaj c si po brzegu wielok ta skr camy w lewo lub w prawo. Obserwacja 2: je»eli wielok t jest wypukªy, to skr camy tylko w prawo

Podstawowy krok: Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Zaªó»my,»e wyznaczyli±my górna kraw d¹ L up dla dla punktów p 1,..., p i 1. Dodajemy kolejny punkt p i. Obserwacja 1: poruszaj c si po brzegu wielok ta skr camy w lewo lub w prawo. Obserwacja 2: je»eli wielok t jest wypukªy, to skr camy tylko w prawo Dodajemy p i do L up. Zauwa»my,»e p i nale»y do otoczki wypukªej punktów p 1,..., p i, bo jest najbardziej na prawo.

Podstawowy krok: Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Zaªó»my,»e wyznaczyli±my górna kraw d¹ L up dla dla punktów p 1,..., p i 1. Dodajemy kolejny punkt p i. Obserwacja 1: poruszaj c si po brzegu wielok ta skr camy w lewo lub w prawo. Obserwacja 2: je»eli wielok t jest wypukªy, to skr camy tylko w prawo Dodajemy p i do L up. Zauwa»my,»e p i nale»y do otoczki wypukªej punktów p 1,..., p i, bo jest najbardziej na prawo. Je»eli trzy ostatnie punkty tworz zakr t w prawo -> OK, dodajemy nast pny punkt W przeciwnym wypadku, usuwamy ±rodkowy, Powtarzamy sprawdzenie dla nowych trzech ostatnich, lub a» zostan tylko dwa.

Algorytm 2 ConvexHull(P) Input: P - zbiór punktów na pªaszczy¹nie Output: L - lista wierzchoªków wielok ta CH(P ) 1: posortuj wierzchoªki wg pierwszej wspóªrz dnej 2: L up p 1, L up p 2, 3: for i = 3 to n do 4: L up p i 5: while L up zawiera wi cej ni» 3 punkty and ostanie trzy nie tworz zakr tu w prawo do 6: usu«±rodkowy z trzech ostatnich 7: end while 8: end for 9: L down p n, L down p n 1 10: for i=n-2 to 1 do 11: L down p i 12: while L down zawiera wi cej ni» 3 punkty and ostanie trzy nie tworz zakr tu w prawo do 13: usu«±rodkowy z trzech ostatnich 14: end while 15: end for 16: Usu«pierwszy i ostatni punkt z L down 17: return poª czone listy L up i L down

Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm {4, 10} {6, 10} {9, 10} {4, 10} {6, 10} {9, 10} {7, 9} {7, 9} {2, 6} {2, 6} {0, 5} {6, 5} {0, 5} {6, 5} {9, 4} {9, 4} {7, 3} {7, 3} {8, 2} {8, 2} {5, 1} {5, 1} {7, 0} {7, 0}

Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Nie dziaªa poprawnie Je»eli dwa punkty maj t sam pierwsz wspóªrz dn, nie mamy dobrego porz dku (co to powoduje?). Problem rozwi zujemy sortuj c leksykogracznie.

Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Nie dziaªa poprawnie Je»eli dwa punkty maj t sam pierwsz wspóªrz dn, nie mamy dobrego porz dku (co to powoduje?). Problem rozwi zujemy sortuj c leksykogracznie. Punkty wspóªliniowe nie tworz zakr tu. Nale»y je traktowa, jako tworz ce zakr t w lewo.

Otoczka wypukªa na pªaszczy¹nie Lepszy algorytm Nie dziaªa poprawnie Je»eli dwa punkty maj t sam pierwsz wspóªrz dn, nie mamy dobrego porz dku (co to powoduje?). Problem rozwi zujemy sortuj c leksykogracznie. Punkty wspóªliniowe nie tworz zakr tu. Nale»y je traktowa, jako tworz ce zakr t w lewo. Dobra zªo»ono± Algorytm ma zªo»ono± obliczeniow O(n log n), gdzie n - liczba wierzchoªków. Bez sortowania leksykogracznego jest O(n), bo sortowanie zajmuje wi cej czasu.

Otoczka wypukªa na pªaszczy¹nie Inne algorytmy Istniej lepsze algorytmy: O(log n), O(log 2 n), a nawet O(hn), h- ilo± punktów CH(P ) (Jarvis), a nawet O(n log h) (Chan, 1996)!

wiczenie Opisa dziaªanie i zaimplementowa. Algorytm 3 JarvisConvexHull(P) Input: P - zbiór punktów na pªaszczy¹nie Output: L - lista wierzchoªków wielok ta CH(P ) 1: p punkt le» cy najbardziej na lewo 2: i = 0 3: repeat 4: L[i] p 5: endpoint P [0] 6: for j=1to P do 7: if endpoint == p or P [j] le»y na lewo od prostej przez P [i] i endpoint then 8: endpoint P [j] 9: end if 10: i + + 11: p endpoint 12: end for 13: until endpoint == L[0]

Algorytm rekurencyjny typu dziel i rz d¹. Zªo»ono± O(n log n), pesymistycznie O(n 2 ). Algorytm 4 QuickHull(P) Input: P - zbiór punktów na pªaszczy¹nie Output: L - lista wierzchoªków wielok ta CH(P ) 1: znajd¹ punkty o minimalnej p xmin i maksymalnej p xmax pierwszej wspóªrz dnej, i dodaj je do CH 2: za pomoc prostej p xmin, p xmax podziel P na dwa zbiory, punktów nad i pod prost 3: dla ka»dego z nich: 4: if jest pusty then koniec 5: end if 6: if zawiera jeden punkt then dodaj go do CH and koniec 7: else 8: znajd¹ punkt le» cy najdalej od prostej i utwórz trójk t 9: punkty wewn trz trójk ta nie nale» do CH i mo»na je odrzuci 10: dla nowych prostych (boków trójk ta) znajd¹ punkty le» ce po lewej stronie 11: powtórz poprzednie dwa kroki dla tych zbiorów i nowych prostych 12: end if