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

Podobne dokumenty
Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Animowana grafika 3D. Opracowanie: J. Kęsik.

Geometria w R 3. Iloczyn skalarny wektorów

1 Przestrzeń liniowa. α 1 x α k x k = 0

GRK 4. dr Wojciech Palubicki

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

Geometria analityczna

Prosta i płaszczyzna w przestrzeni

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Oświetlenie obiektów 3D

Algebra liniowa z geometrią

Elementy geometrii analitycznej w R 3

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

Przekształcenia geometryczne. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

I. Potęgi. Logarytmy. Funkcja wykładnicza.

Tomasz Tobiasz PLAN WYNIKOWY (zakres podstawowy)

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

KONKURS ZOSTAŃ PITAGORASEM MUM. Podstawowe własności figur geometrycznych na płaszczyźnie

PRÓBNA MATURA ZADANIA PRZYKŁADOWE

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

Opis krzywych w przestrzeni 3D. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej AGH

Geometria. Rozwiązania niektórych zadań z listy 2

Elementy grafiki komputerowej. Elementy geometrii afinicznej

Animowana grafika 3D. Opracowanie: J. Kęsik.

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

1 Geometria analityczna

1. Potęgi. Logarytmy. Funkcja wykładnicza

GEOMETRIA ANALITYCZNA. Poziom podstawowy

Geometria Analityczna w Przestrzeni

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

PRÓBNA MATURA ZADANIA PRZYKŁADOWE

GEOMETRIA ANALITYCZNA W PRZESTRZENI

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM

1 Funkcje dwóch zmiennych podstawowe pojęcia

Geometria analityczna - przykłady

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

Zadania do samodzielnego rozwiązania zestaw 11

GEOMETRIA ELEMENTARNA

Rozkład materiału nauczania

i = [ 0] j = [ 1] k = [ 0]

Repetytorium z matematyki ćwiczenia

3. Macierze i Układy Równań Liniowych

Rachunek całkowy - całka oznaczona

Informatyka Stosowana. a b c d a a b c d b b d a c c c a d b d d c b a

Geometria analityczna

22. CAŁKA KRZYWOLINIOWA SKIEROWANA

Zad.3. Jakub Trojgo i Jakub Wieczorek. 14 grudnia 2013

Zestaw Obliczyć objętość równoległościanu zbudowanego na wektorach m, n, p jeśli wiadomo, że objętość równoległościanu zbudowanego na wektorach:

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

WSTĘP DO GRAFIKI KOMPUTEROWEJ

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY DRUGIEJ LICEUM OGÓLNOKSZTAŁCĄCEGO ZAKRES PODSTAWOWY

Grafika komputerowa Wykład 4 Geometria przestrzenna

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

I. Funkcja kwadratowa

Wymagania na egzamin poprawkowy z matematyki z zakresu klasy drugiej TECHNIKUM

I. Funkcja kwadratowa

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

1. ODPOWIEDZI DO ZADAŃ TESTOWYCH

Kryteria oceniania z matematyki Klasa III poziom podstawowy

ALGEBRA z GEOMETRIA, ANALITYCZNA,

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

FUNKCJA LINIOWA - WYKRES

Równania prostych i krzywych; współrzędne punktu

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

Technologie Informacyjne

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO OTRZYMANIA PRZEZ UCZNIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI

Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu

PRÓBNY EGZAMIN MATURALNY

Zagadnienia do małej matury z matematyki klasa II Poziom podstawowy i rozszerzony

Ćwiczenia z Geometrii I, czerwiec 2006 r.

FUNKCJE. Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 5 Teoria funkcje cz.1. Definicja funkcji i wiadomości podstawowe

AUTORKA: ELŻBIETA SZUMIŃSKA NAUCZYCIELKA ZESPOŁU SZKÓŁ OGÓLNOKSZTAŁCĄCYCH SCHOLASTICUS W ŁODZI ZNANE RÓWNANIA PROSTEJ NA PŁASZCZYŹNIE I W PRZESTRZENI

Ekoenergetyka Matematyka 1. Wykład 6.

Praca kontrolna z matematyki nr 1 Liceum Ogólnokształcące dla Dorosłych Semestr 5 Rok szkolny 2014/2015

Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY. (zakres podstawowy) klasa 2

KORESPONDENCYJNY KURS Z MATEMATYKI. PRACA KONTROLNA nr 1

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

Dydaktyka matematyki, IV etap edukacyjny (ćwiczenia) Ćwiczenia nr 7 Semestr zimowy 2018/2019

Indukcja matematyczna

V Konkurs Matematyczny Politechniki Białostockiej

Treści zadań Obozu Naukowego OMG

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

KLASA II TECHNIKUM POZIOM PODSTAWOWY PROPOZYCJA POZIOMÓW WYMAGAŃ

A. fałszywa dla każdej liczby x.b. prawdziwa dla C. prawdziwa dla D. prawdziwa dla

Arkusz 6. Elementy geometrii analitycznej w przestrzeni

Geometria wykreślna. 5. Obroty i kłady. Rozwinięcie wielościanu. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Obrót wokół początku układu współrzędnych o kąt φ można wyrazić w postaci macierzowej następująco

Transkrypt:

Wstęp do grafiki 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) Powinowactwo 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 (afinicznym) 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 Powinowactwo osiowe Powinowactwo 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 powinowactwo 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 grafice 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 afinicznym(!).

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 afinicznym(!).

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 Definicja Własności Algorytm Castelajau Podział krzywej Renderowanie krzywej Bezier Morphing Piecewise Bezier Punkt przecięcia

Krzywe Bezier Definicja 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 Definicja Krzywe niskich stopni liniowa: B(t) = b 0 (1 t) + b 1 t kwadratowa: B(t) = b 0 (1 t) 2 + b 1 2(1 t)t + b 2 t 2 3-go stopnia: 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 afinicznego 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 Definicja Własności NURBS y B-splines

B-spline Definicja 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 Definiujemy 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 Definicja Baza bisplajnów stopnia d zdefiniowaną przez węzły t d t m d N i,d (t) = N i,0 (t) = { 1 t [t i, t i+1 ] 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ń afinicznych 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 modyfikacja 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ń afinicznych 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 fizycznych, długośc fali promieniowania elektromagnetycznego fizjologicznych, 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 grafice komputerowej (technice cyfrowej): RedGreenBlue Źródło: wikipedia.pl

Rendering Kolor Barwy podstawowe w poligrafii: 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 fizyki, fizjologii, 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 fizyczne w których można porównywać kolory. Problem jest zuważalny w przypadku DTP, w przypadku fotografii 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 graficzny, np.: GIMP

Rendering Oświetlenie Problem oświetlenia w grafice 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 grafice (lub w szkolnej fizyce) 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 reflektor (paraboliczny)

Rendering Oświetlenie Niektóre zjawiska fizyczne uwzględniane w grafice 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 fizyczne.

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 fizyczne: 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 Diffuse (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 fizycznym 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ę graficzną. W programach graficznych, 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ę graficzną - 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. Definicje 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 Definicja 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 Definicja 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.

Otoczka wypukła na płaszczyźnie Lepszy algorytm Podstawowy krok: 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.

Otoczka wypukła na płaszczyźnie Lepszy algorytm Podstawowy krok: 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

Otoczka wypukła na płaszczyźnie Lepszy algorytm Podstawowy krok: 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.

Otoczka wypukła na płaszczyźnie Lepszy algorytm Podstawowy krok: 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 leksykograficznie.

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 leksykograficznie. 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 leksykograficznie. 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 leksykograficznego 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