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)]
Plik z chomika:
Phoob
Inne pliki z tego folderu:
Materialy.zip
(6878 KB)
GRK Raytracer.zip
(6174 KB)
PRZEMO.rar
(6185 KB)
cw4_doned.7z
(3143 KB)
Gago.zip
(2219 KB)
Inne foldery tego chomika:
ALG
AM2
ANG1
ANG2
ASD
Zgłoś jeśli
naruszono regulamin