sciaga_kolos1.pdf

(136 KB) Pobierz
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 >
OBCINANIE
- analityczne
- w trakcie konwersji
- w czasie operacji Copypixel
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
7/16
3/16
5/16
1/16
SKALOWANIE WZGLĘDEM LOKALNEGO
UKŁADU WSPÓŁRZĘDNYCH
1) T( -xl, -yl )
2) S( Sx, Sy )
3) 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
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
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
1. Algorytm Cohena-Sutherlanda
Klasyfikacja wierzchołków odcinka
1-t
1
t
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.
1
1001
1000
1010
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
ymax
0001
0000
0010
ymin
0101
0100
0110
xmin
xmax
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
PROCES RZUTOWANIA
1. Prymitywy wejściowe we współrzędnych
świata
2. Obcięcie przez bryłę widzenia
3. Rzutowanie na rzutnię
4. Przekształcenie na współrzędne ekranu +
określenie koloru pikseli
B1
1
B4
B2
3
B3
Y
Y
P’(x’,y’,z’)
P’(x’,y’,z’)
X
X
P(x,y,z)
P(x,y,z)
RZUTOWANIE W PRZESTRZENI 3D
Rzutowanie – przekształcenia punktów
prowadzące z przestrzeni n-wymiarowej do
przestrzeni mniej niż n-wymiarowej
1/2
1
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
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
Z
Z
Punkt zbieżności linii, osiowe punkty zbieżności
1. Jednopunktowy rzut perspektywiczny
d
d
Y
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
P4
P2
P3
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
P1
X
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
Z
WYZNACZANIE POWIERZCHNI
WIDOCZNYCH (ELIMINACJA
POWIERZCHNI NIEWIDOCZNYCH)
Test zgrubny Test II
2. Perspektywa dwupunktowa
WYPEŁNIANIE
1. Które piksele wypełnić
2. Czym je wypełnić
WYPEŁNIANIE STAŁYM KOLOREM
a) Wypełnianie prostokąta
for ( y = ymin; y <= ymax; y++)
{ for (x = xmin; x <= xmax; x++)
writepixel(x, y, color) }
b) Wypełnianie wielokątów
Wypełnianie danej linii:
1. 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
2. Posortuj współrzędne x w kolejności rosnącej
3. Wypełnij piksele segmentów linii poziomej
korzystając z reguły parzystości ( parzystej
liczby przecięć), krawędzie poziome
ignorujemy.
c) Wypełnianie wzorami
d) Wypełnianie wzorami bez wielokrotnej
konwersji wierszowej
A B C D z
- 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)
}}}}
WSPÓŁRZĘDNE JEDNORODNE I
MACIERZOWA REPREZENTACJA
PRZEKSZTAŁCEŃ
3. Perspektywa trzypunktowa
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
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
x’ Sx 0 0 x Sx * x
[ y’ ] = [ 0 Sy 0 ] * [ y ] = [ Sy * y ]
1 0 0 1 1 1
Wpisywanie (biały)
z 1
y1
zp
Blokowanie (czarny)
za
x’ cos -sin 0 x xcos-ysin
[ y’ ] = [ sin  cos 0 ] * [ y ] = [ xsin+ycos ]
1 0 0 1 1 1
ys
y2
y3
zb
z2
z3
RYSOWANIE GRUBUCH LINII
Stosowanie piórka przy użyciu maski jak przy
wypełnianiu bez wielokrotnej konwersji
wierszowej.
OBRÓT WZGLĘDEM LOKALNEGO
UKŁADU WSPÓŁRZĘDNYCH
1) T( -xl, -yl )
2) R(  )
3) T( xl, yl )
za=z1-(z1-z2)*[(y1-ys)/(y1-y2)]
zb=z1-(z1-z3)*[(y1-ys)/(y1-y3)]
zp=zb-(zb-za)*[(xb-xp)/(xb-xa)]
801960842.056.png 801960842.067.png 801960842.078.png 801960842.089.png 801960842.001.png 801960842.007.png 801960842.008.png 801960842.009.png 801960842.010.png 801960842.011.png 801960842.012.png 801960842.013.png 801960842.014.png 801960842.015.png 801960842.016.png 801960842.017.png 801960842.018.png 801960842.019.png 801960842.020.png 801960842.021.png 801960842.022.png 801960842.023.png 801960842.024.png 801960842.025.png 801960842.026.png 801960842.027.png 801960842.028.png 801960842.029.png 801960842.030.png 801960842.031.png 801960842.032.png 801960842.033.png 801960842.034.png 801960842.035.png 801960842.036.png 801960842.037.png 801960842.038.png 801960842.039.png 801960842.040.png 801960842.041.png 801960842.042.png 801960842.043.png 801960842.044.png 801960842.045.png 801960842.046.png 801960842.047.png 801960842.048.png 801960842.049.png 801960842.050.png 801960842.051.png 801960842.052.png 801960842.053.png 801960842.054.png 801960842.055.png 801960842.057.png 801960842.058.png 801960842.059.png 801960842.060.png 801960842.061.png 801960842.062.png 801960842.063.png 801960842.064.png 801960842.065.png 801960842.066.png 801960842.068.png 801960842.069.png 801960842.070.png 801960842.071.png 801960842.072.png 801960842.073.png 801960842.074.png 801960842.075.png 801960842.076.png 801960842.077.png 801960842.079.png 801960842.080.png 801960842.081.png 801960842.082.png 801960842.083.png 801960842.084.png 801960842.085.png 801960842.086.png 801960842.087.png 801960842.088.png 801960842.090.png 801960842.091.png 801960842.092.png 801960842.093.png 801960842.094.png 801960842.095.png 801960842.096.png 801960842.097.png 801960842.098.png 801960842.099.png 801960842.002.png 801960842.003.png 801960842.004.png 801960842.005.png 801960842.006.png
 
Zgłoś jeśli naruszono regulamin