PARAMETRYCZNY OPIS KRZYWEJ
x=fx(t) x=200t+100 x=100t^2+100
y=fy(t) x=400t+300 x=400t^2+200 t ∈ < 0,1 >
t=0, x =fx(0), y = fy(0) punkt początkowy xp, yp
t=1, x =fx(1), y = fy(1) punkt końcowy xk, yk
x = axt + bx xp = bx
y = bxt + by t ∈ < 0,1 > yp = by
xk = ax + bx xk = ax + xp ax = xk - xp
yk = ay + by yk = ay + yp ay = yk - yp
x = xp ( 1 – t ) + xkt
y = yp ( 1 – t ) + ykt t ∈ < 0,1 >
KRZYWE BEZIERA
Dane są 4 punkty p1, p2, p3, p4. Krzywa musi przechodzić przez p1 i p4. Punkty p2 i p3 są aproksymowane. Wagi poszczególnych punktów są określone wielomianami Bernsteina
Q(t) = [ qx(t) , qy(t) ]
Q(t) = (1 – t)^3 P1 + B1
+ 3t (1 - t)^2 P2 + B2
+ 3t^2 (1 - t) P3 + B3
+ t^3 P4 B4
Własności:
1. Krzywa przechodzi przez p1 i p4
2. W punkcie p1 krzywa jest styczna do p2p1
3. W punkcie p4 krzywa jest styczna do p4p3
4. Krzywa zawiera się w minimalnym
wielokącie wypukłym rozpiętym na punktach
p1, p2, p3, p4
Ciągłość geometryczna G1 jest to zachowanie tego samego kierunku wektorów sterujących. Ciągłość parametryczna C1 jest to zachowanie tego samego kierunku wektorów sterujących i te same długości.
CUSP – ostre przejście
SMOOTH – ciągłość G1
SYMMETRY – ciągłość C1
WYPEŁNIANIE
Które piksele wypełnić
Czym je wypełnić
WYPEŁNIANIE STAŁYM KOLOREM
Wypełnianie prostokąta
for ( y = ymin; y <= ymax; y++)
{ for (x = xmin; x <= xmax; x++)
writepixel(x, y, color) }
Wypełnianie wielokątów
Wypełnianie danej linii:
Znajdź przecięcia linii określonej y z wszystkimi krawędziami obwodu (E, D , C , B ) – oznacza znalezienie wszystkich współrzędnych x punktów przecięcia
Posortuj współrzędne x w kolejności rosnącej
Wypełnij piksele segmentów linii poziomej korzystając z reguły parzystości ( parzystej liczby przecięć), krawędzie poziome ignorujemy.
Wypełnianie wzorami
Wypełnianie wzorami bez wielokrotnej konwersji wierszowej
RYSOWANIE GRUBUCH LINII
Stosowanie piórka przy użyciu maski jak przy wypełnianiu bez wielokrotnej konwersji wierszowej.
OBCINANIE
analityczne
w trakcie konwersji
w czasie operacji Copypixel
OBCINANIE ODCINKÓW PROSTOKĄTEM
Odcinek w postaci parametrycznej:
x = 100t
y = 200t t ∈ < 0,1 >
Czy przecina się z x = 1024 ?
1024 = 100t => t = 1024/100 = 10,24
Algorytm Cohena-Sutherlanda
Klasyfikacja wierzchołków odcinka
x, y – współrzędne punktu, który analizujemy
bit 1 – ymax – y
bit 2 – y – ymin 0 – (+)
bit 3 – xmax – x 1 – (-)
bit 4 – x – xmin
Po określeniu kodów wnioskujemy:
0000
+ 0000
0000 w pełni akceptowalny
Jeśli operacja AND na obu słowach kodowych daje wynik != 0 to oba końce w tej samej półpłaszczyźnie nie przecinającej się z oknem obcinanym.
1000
* 1010
1000
PRZEKSZTAŁCENIA
Przesunięcie (translacja)
Wektor przesunięcia (3, -4); (2, 4) --> (5, 0)
x x’ dx
P = [ y ] P’ = [ y’ ] T = [ dy ] T(dx, dy)
P’ = P + T
Skalowanie
x’ = Sx * x y’ = Sy * y
Sx, Sy – współczynniki skali
x’ Sx 0 x
[ y’ ] = [ 0 Sy ] * [ y ] S(Sx, Sy)
P’ = P * S(Sx, Sy)
Obrót
x = r cos ϕ y = r sin ϕ
x’ = r cos (ϕ + θ) = r cos ϕ cos θ - r sin ϕ sin θ
y’ = r sin (ϕ + θ) = r sin ϕ cos θ + r sin θ sin ϕ
x’ = x cos θ - y sin θ y’ = x sin ϕ + y cos θ
x’ cos θ - sin θ x
[ y’ ] = [ sin θ cos θ ] * [ y ] R (θ)
P’ = P * R(θ)
(√2)/2 - (√2)/2
R [ Π / 4 ] = [ (√2)/2 (√2)/2 ]
P’ = M1 * P
P” = M2 * P’ = M2 * M1 * P = Mz * P
WSPÓŁRZĘDNE JEDNORODNE I MACIERZOWA REPREZENTACJA PRZEKSZTAŁCEŃ
Przestrzeń 2D – wprowadzamy trzecią współrzędną
Punkt : (x, y, W)
(x, y, W) (x’, y’, W’) – ten sam punkt
(3, 4, 1) <-> (6, 8, 2) <-> (9, 12, 3)
Współrzędne są znormalizowane, gdy W=1
Znajdowanie postaci znormalizowanej :
(x, y, W) --> (x / W, y / W, W / W)
Jeśli współrzędne (x, y, W) są w postaci znormalizowaniej, to x, y – oznaczają współrzędne punktu w zwykłej przestrzenie 2D.
x’ 1 0 dx x x + dx
[ y’ ] = [ 0 1 dy ] * [ y ] = [ y + dy ]
1 0 0 1 1 1
x’ Sx 0 0 x Sx * x
[ y’ ] = [ 0 Sy 0 ] * [ y ] = [ Sy * y ]
1 0 0 1 1 1
x’ cosθ -sinθ 0 x xcosθ-ysinθ
[ y’ ] = [ sin θ cosθ 0 ] * [ y ] = [ xsinθ+ycosθ ]
1 0 0 1 1 1
OBRÓT WZGLĘDEM LOKALNEGO UKŁADU WSPÓŁRZĘDNYCH
T( -xl, -yl )
R( α )
T( xl, yl )
P’ = T(xl, yl) * R(α) * T(-xl, -yl) * P = Mz * P
1 0 xl cosα -sinα 0 1 0 -xl
[ 0 1 yl ] * [ sinα cosα 0 ] * [ 0 1 -yl ] = Mz
0 0 1 0 0 1 0 0 1
SKALOWANIE WZGLĘDEM LOKALNEGO UKŁADU WSPÓŁRZĘDNYCH
T( -xl, -yl )
S( Sx, Sy )
T( xl, yl )
P’ = T(-xl, -yl) * S(Sx, Sy) * T(xl, yl) * P
PRZESTRZEŃ 3D
przesunięcie T(dx, dy, dz) =
1 0 0 dx
0 1 0 dy
= [ 0 0 1 dz ]
0 0 0 1
skalowanie S(Sx, Sy, Sz) =
Sx 0 0 0
0 Sy 0 0
= [ 0 0 Sz 0 ]
0 0 0 1
obrót Rz(θ) =
cosθ -sinθ 0 0
sinθ cosθ 0 0
= [ 0 0 1 0 ]
0 0 0 1
obrót Rx(θ) =
1 0 0 0
0 cosθ -sinθ 0
= [ 0 sinθ cosθ 0 ]
0 0 0 1
obrót Ry(θ) =
cosθ 0 sinθ 0
0 1 0 0
= [ -sinθ 0 cosθ 0 ]
0 0 0 1
RZUTOWANIE W PRZESTRZENI 3D
Rzutowanie – przekształcenia punktów prowadzące z przestrzeni n-wymiarowej do przestrzeni mniej niż n-wymiarowej
Punkt zbieżności linii, osiowe punkty zbieżności
Jednopunktowy rzut perspektywiczny
Perspektywa dwupunktowa
Perspektywa trzypunktowa
TECHNIKI DRUKOWANIA
Drukarki: laserowe, atramentowe
Fotonaświetlarki: do klisz małoobrazkowych,
do przygotowania do druku
Proces przygotowania do druku:
wyciągi barwne CMYK
klisze z fotonaświetlarki
matryce drukarskie (blacha)
Rozdzielczość – liczba kropek na jednostkę długości
Raster poligraficzny – metoda klasyczna
Gęstość rastra – liczba linii na jednostkę długości
Metody uzyskiwania tonów:
mikrowzory
metoda klasyczna
metoda dyfuzji błędu
Im bardziej widoczny raster tym większy powinien być kąt nachylenia. Dla koloru czarnego 45°, a dla żółtego najmniejszy.
Firma PANTONE:
Pantone Process Colors
Pantone Matching System Colors
Pantone Hexachrome Colors
RZUTY RÓWNOLEGŁE
rzuty prostokątne (ortogonalne)
rzuty ukośne
Rzuty aksynometryczne – na rzutnię nie równoległą do jakiejkolwiek płaszczyzny głównej układu współrzędnych:
izometryczne (kierunek razutowania równoległy do wektora (1, 1, 1)
inne
Bryła (stożek, piramida) widzenia.
PROCES RZUTOWANIA
Prymitywy wejściowe we współrzędnych świata
Obcięcie przez bryłę widzenia
Rzutowanie na rzutnię
Przekształcenie na współrzędne ekranu + określenie koloru pikseli
x’/d = x/z y’/d = y/z x’ = x/(z/d) y’ = y/(z/d)
1 0 0 0
0 1 0 0
Mper = [ 0 0 1 0 ]
0 0 1/d 0
1 0 0 0 x x x’ = x/(z/d)
0 1 0 0 y y y’ = y/(z/d)
[ 0 0 1 0 ] * [ z ] = [ z ] z’ = d
0 0 1/d 0 1 z/d w = 1
P’ = Mper * P
WYZNACZANIE POWIERZCHNI WIDOCZNYCH (ELIMINACJA POWIERZCHNI NIEWIDOCZNYCH)
Test zgrubny Test II
algorytm malarski – sortowanie ze względu na odległość
algorytm z-bufora – pamiętanie odległości piksela
Oprócz koloru pamiętamy współrzędną z:
z = 0 - tło
z > 0 - odległość od tła do obserwatora
void zBuffer
{ int pz /* wartość z rozpatrywanego piksela */
for (y = 0; y < YMAX; y++) {
for (x = 0; x < XMAX; x++) {
WritePixel(x, y, Background_Value)
WriteZ(x, y, 0)
}}
for (każdy_wielokąt) {
for (każdy piksel w rzucie wielokąta) {
pz= wartość z wielokąta bieżącego dla (x,y)
if (pz >= ReadZ(x,y)){
WriteZ(x, y, pz)
WritePixel(x,y, barwa_wielokąta)
}}}}
za=z1-(z1-z2)*[(y1-ys)/(y1-y2)]
zb=z1-(z1-z3)*[(y1-ys)/(y1-y3)]
zp=zb-(zb-za)*[(xb-xp)/(xb-xa)]
Główne zastosowania grafiki:
CAD – wspomaganie projektowania
Symulatory (głównie lotu)
Symulacja stosunków świetlnych
Sztuka komputerowa
Medycyna (np. tomografia)
Poligrafia
Internet
Rzeczywistość wirtualna
Obiekt:
przynależność do klasy (prostokąt,
elipsa, łamana, tekst)
parametry (zestawy liczb określające
własności geometryczne)
atrybuty – cechy graficzne (obrys
obiektu, wypełnienie)
Piksel:
położenie
kolor
Liczba pikseli w poziomie, w pionie.
Rozdzielczość w poziomie, w pionie.
1 bpp – 2 kolory
4 bpp – 16 kolorów
8 bpp – 256 kolorów
24 bpp – 16777216 kolorów
32 bpp – CMYK, RGBα - przezroczystość
48 bpp – 16R, 16G 16B
Barwa na przestrzeni dziejów. Podejście:
fizyka
biologia
psychologia
farbiarstwo
fotografia
telewizja
malarstwo
grafika komputerowa
Malarstwo:
Fizyka:
Moc światła
Strumień – moc przechodząca przez
wycinek powierzchni
θ = P/(wycinek powierzchni odniesiony
do powierzchni kątowej
[W/steradian] = [cd] kandela
Światło widzialne – fala elektromagnetyczna
380-780 nm
Biologia i psychologia:
Zmiana czułości oka w zależności od długości fali.
Metamer – takie samo wrażenie barwne
barwa czysta
nasycenie + jasność (czynnik proporcji do
cień mocy źródła)
Psychofizyka:
Bodziec fizyczny potencjały czynnościowe mózg
Trójskładowa teoria widzenia barwy Younga –Helnholtza:
barwa czerwona
barwa zielona
barwa niebieska
Trzy rodzaje czopków wrażliwych na barwe
Pręciki wrażliwe na jasność.
właściwości fizyczne obserwowanej powierzchni
właściwości fizyczne źródła światła
właściwości ośrodka, przez który biegnie światło
właściwości otaczających obiektów
stan oka
charakterystyki transmisyjne receptorów i ośrodków nerwowych
oprzednie doświadczenie obserwatora
1991r. – min 35.000 barw
liczba odcieni 128
liczba poziomów nasycenia 130
liczba poziomów jasności:
niebieski 16
żółty 23
światło achromatyczne
0 – czarny
1 – biały
światło achromatyczne z pośrednimi poziomami szarości
0,1 – 0,11
0,5 – 0,55
model RGB
model HSV (hue, saturation, value)
model HLS (hue, light, saturation)
model CMY
Odcinek
DDA
Bresenham
p0 = 2Δy - Δx
pk < 0 (xk + 1, yk)
pk+1 = pk + 2Δy
pk >= 0 (xk + 1, yk + 1)
pk+1 = pk + 2Δy - 2Δx
antyaliasing
dodawanie pikseli o pośrednich kolorach
zmiana rodzielczości
model powierzchniowy – większa powierzchnia ciemniejsza (wprowadzamy 9 punktów i badamy położenie)
model stożkowy (rozłożenie funkcji nieliniowej na okrąg przez środki przyległych pikseli)
Okrąg
Midpoint
(x0, y0) = (0, r)
p0 = 5/4 – r
pk < 0 (xk + 1, yk)
pk+1 = pk + 2xk+1 + 1
pk >= 0 (xk + 1, yk + 1)
pk+1 = pk + 2xk+1 + 1 – 2yk+1
[ 2xk+1 = 2xk + 2 i 2yk+1 = 2yk – 2 ]
Barwa C.D. Układ CIE - XYZ
CIE – Międzynarodowa Komisja
Oświetleniowa 1931r.
CIE – RGB
Składowe trójchromatyczne:
R – światło z lampy żarowej przez filtr
tłumiący fale o λ < 700 nm
G – 546,1 nm prążki z widma
B – 435,8 nm łuku rtęciowego
Światło białe:
R – 0,17697
G – 0,81240
B – 0,01063
Płaszczyzna stałego strumienia:
CIE – XYZ
Z – brak wrażeń barwnych
Na obrzeżu barwy widmowe, a w środku biel.
Przy mieszaniu można ustalić proporcje.
Na linii prostej leżą barwy możliwe do otrzymania.
Różne przestrzenia barw luminoforów dla ekranów różnych producentów.