PARAMETRYCZNY OPIS KRZYWEJ OBCINANIE P = T(xl, yl) * R(að) * T(-xl, -yl) * P = Mz * P
x=fx(t) x=200t+100 x=100t^2+100 - analityczne
1 0 xl cosað -sinað 0 1 0 -xl
y=fy(t) x=400t+300 x=400t^2+200 t Îð < 0,1 > - w trakcie konwersji
[ 0 1 yl ] * [ sinað cosað 0 ] * [ 0 1 -yl ] = Mz
7/16
t=0, x =fx(0), y = fy(0) punkt poczÄ…tkowy xp, yp - w czasie operacji Copypixel
0 0 1 0 0 1 0 0 1
t=1, x =fx(1), y = fy(1) punkt końcowy xk, yk
3/16 5/16 1/16
x = axt + bx xp = bx
SKALOWANIE WZGLDEM LOKALNEGO
y = bxt + by t Îð < 0,1 > yp = by UKAADU WSPÓARZDNYCH
xk = ax + bx xk = ax + xp ax = xk - xp 1) T( -xl, -yl )
Im bardziej widoczny raster tym większy
yk = ay + by yk = ay + yp ay = yk - yp 2) S( Sx, Sy )
OBCINANIE ODCINKÓW PROSTOKTEM powinien być kąt nachylenia. Dla koloru
x = xp ( 1 t ) + xkt 3) T( xl, yl )
Odcinek w postaci parametrycznej: czarnego 45°ð, a dla żółtego najmniejszy.
y = yp ( 1 t ) + ykt t Îð < 0,1 > P = T(-xl, -yl) * S(Sx, Sy) * T(xl, yl) * P
x = 100t Firma PANTONE:
PRZESTRZEC 3D
y = 200t t Îð < 0,1 > - Pantone Process Colors
1-t - przesunięcie T(dx, dy, dz) =
Czy przecina siÄ™ z x = 1024 ? - Pantone Matching System Colors
1 1 0 0 dx
1024 = 100t => t = 1024/100 = 10,24 - Pantone Hexachrome Colors
0 1 0 dy
1. Algorytm Cohena-Sutherlanda
= [ 0 0 1 dz ]
t
Klasyfikacja wierzchołków odcinka RZUTY RÓWNOLEGAE
0 0 0 1
- rzuty prostokÄ…tne (ortogonalne)
- skalowanie S(Sx, Sy, Sz) =
- rzuty ukośne
Sx 0 0 0
1 1001 1000 1010
Rzuty aksynometryczne na rzutniÄ™ nie
KRZYWE BEZIERA 0 Sy 0 0
ymax
równoległą do jakiejkolwiek płaszczyzny
Dane sÄ… 4 punkty p1, p2, p3, p4. Krzywa musi = [ 0 0 Sz 0 ]
0001 0000 0010
głównej układu współrzędnych:
przechodzić przez p1 i p4. Punkty p2 i p3 są 0 0 0 1
ymin
- izometryczne (kierunek razutowania
aproksymowane. Wagi poszczególnych punktów - obrót Rz(qð) =
0101 0100 0110
równoległy do wektora (1, 1, 1)
są określone wielomianami Bernsteina
cosqð -sinqð 0 0
- inne
Q(t) = [ qx(t) , qy(t) ]
sinqð cosqð 0 0
xmin xmax
Bryła (stożek, piramida) widzenia.
Q(t) = (1 t)^3 P1 + B1
= [ 0 0 1 0 ]
x, y współrzędne punktu, który analizujemy
+ 3t (1 - t)^2 P2 + B2
0 0 0 1
bit 1 ymax y PROCES RZUTOWANIA
+ 3t^2 (1 - t) P3 + B3
- obrót Rx(qð) =
bit 2 y ymin 0 (+) 1. Prymitywy wejściowe we współrzędnych
+ t^3 P4 B4
1 0 0 0
bit 3 xmax x 1 (-) świata
0 cosqð -sinqð 0
B1
bit 4 x xmin 2. Obcięcie przez bryłę widzenia
= [ 0 sinqð cosqð 0 ]
1
Po określeniu kodów wnioskujemy: 3. Rzutowanie na rzutnię
0 0 0 1
B4 0000 4. Przekształcenie na współrzędne ekranu +
- obrót Ry(qð) =
B2 + 0000 określenie koloru pikseli
cosqð 0 sinqð 0
3 0000 w pełni akceptowalny
0 1 0 0
Y P (x ,y ,z )
B3 Jeśli operacja AND na obu słowach kodowych Y P (x ,y ,z )
= [ -sinqð 0 cosqð 0 ]
daje wynik != 0 to oba końce w tej samej
0 0 0 1
półpłaszczyznie nie przecinającej się z oknem
X P(x,y,z)
X P(x,y,z)
obcinanym.
RZUTOWANIE W PRZESTRZENI 3D
1000
1/2 1
Rzutowanie przekształcenia punktów
* 1010
prowadzÄ…ce z przestrzeni n-wymiarowej do
1000
Własności:
przestrzeni mniej niż n-wymiarowej
1. Krzywa przechodzi przez p1 i p4
PRZEKSZTAACENIA
2. W punkcie p1 krzywa jest styczna do p2p1
Z
Z
Punkt zbieżności linii, osiowe punkty zbieżności
3. W punkcie p4 krzywa jest styczna do p4p3 - Przesunięcie (translacja)
d
d
1. Jednopunktowy rzut perspektywiczny
Wektor przesunięcia (3, -4); (2, 4) --> (5, 0)
4. Krzywa zawiera siÄ™ w minimalnym
Y
x x dx x /d = x/z y /d = y/z x = x/(z/d) y = y/(z/d)
wielokącie wypukłym rozpiętym na punktach
P = [ y ] P = [ y ] T = [ dy ] T(dx, dy) 1 0 0 0
p1, p2, p3, p4
P4
P = P + T 0 1 0 0
P2
- Skalowanie Mper = [ 0 0 1 0 ]
x = Sx * x y = Sy * y 0 0 1/d 0
Sx, Sy współczynniki skali
P3
x Sx 0 x 1 0 0 0 x x x = x/(z/d)
[ y ] = [ 0 Sy ] * [ y ] S(Sx, Sy) 0 1 0 0 y y y = y/(z/d)
P = P * S(Sx, Sy) [ 0 0 1 0 ] * [ z ] = [ z ] z = d
- Obrót 0 0 1/d 0 1 z/d w = 1
P1 X
x = r cos jð y = r sin jð P = Mper * P
CiÄ…gÅ‚ość geometryczna G1 jest to zachowanie x = r cos (jð + qð) = r cos jð cos qð - r sin jð sin qð
Z WYZNACZANIE POWIERZCHNI
tego samego kierunku wektorów sterujÄ…cych. y = r sin (jð + qð) = r sin jð cos qð + r sin qð sin jð
WIDOCZNYCH (ELIMINACJA
Ciągłość parametryczna C1 jest to zachowanie
x = x cos qð - y sin qð y = x sin jð + y cos qð
2. Perspektywa dwupunktowa
POWIERZCHNI NIEWIDOCZNYCH)
tego samego kierunku wektorów sterujących i te
x cos qð - sin qð x
Test zgrubny Test II
same długości.
[ y ] = [ sin qð cos qð ] * [ y ] R (qð)
CUSP ostre przejście
P = P * R(qð)
SMOOTH ciągłość G1
(Öð2)/2 - (Öð2)/2
SYMMETRY ciągłość C1
R [ Pð / 4 ] = [ (Öð2)/2 (Öð2)/2 ]
P = M1 * P
WYPEANIANIE
P = M2 * P = M2 * M1 * P = Mz * P
A B C D z
1. Które piksele wypełnić
- algorytm malarski sortowanie ze względu
2. Czym je wypełnić
WSPÓARZDNE JEDNORODNE I
na odległość
WYPEANIANIE STAAYM KOLOREM
MACIERZOWA REPREZENTACJA
- algorytm z-bufora pamiętanie odległości
a) Wypełnianie prostokąta
PRZEKSZTAACEC
piksela
for ( y = ymin; y <= ymax; y++)
3. Perspektywa trzypunktowa
Oprócz koloru pamiętamy współrzędną z:
{ for (x = xmin; x <= xmax; x++)
Przestrzeń 2D wprowadzamy trzecią
- z = 0 - tło
writepixel(x, y, color) }
współrzędną
- z > 0 - odległość od tła do obserwatora
b) Wypełnianie wielokątów
Punkt : (x, y, W)
void zBuffer
Wypełnianie danej linii:
(x, y, W) (x , y , W ) ten sam punkt
{ int pz /* wartość z rozpatrywanego piksela */
1. Znajdz przecięcia linii określonej y z
(3, 4, 1) <-> (6, 8, 2) <-> (9, 12, 3)
for (y = 0; y < YMAX; y++) {
wszystkimi krawędziami obwodu (E, D , C ,
Współrzędne są znormalizowane, gdy W=1
for (x = 0; x < XMAX; x++) {
B ) oznacza znalezienie wszystkich
Znajdowanie postaci znormalizowanej :
WritePixel(x, y, Background_Value)
współrzędnych x punktów przecięcia
(x, y, W) --> (x / W, y / W, W / W)
WriteZ(x, y, 0)
2. Posortuj współrzędne x w kolejności rosnącej
Jeśli współrzędne (x, y, W) są w postaci
}}
3. Wypełnij piksele segmentów linii poziomej
znormalizowaniej, to x, y oznaczajÄ…
for (każdy_wielokąt) {
korzystając z reguły parzystości ( parzystej
współrzędne punktu w zwykłej przestrzenie 2D.
for (każdy piksel w rzucie wielokąta) {
liczby przecięć), krawędzie poziome
x 1 0 dx x x + dx
TECHNIKI DRUKOWANIA
pz= wartość z wielokąta bieżącego dla (x,y)
ignorujemy.
[ y ] = [ 0 1 dy ] * [ y ] = [ y + dy ]
Drukarki: laserowe, atramentowe
if (pz >= ReadZ(x,y)){
c) Wypełnianie wzorami
1 0 0 1 1 1
Fotonaświetlarki: do klisz małoobrazkowych,
WriteZ(x, y, pz)
d) Wypełnianie wzorami bez wielokrotnej
do przygotowania do druku
WritePixel(x,y, barwa_wielokÄ…ta)
konwersji wierszowej
x Sx 0 0 x Sx * x
Proces przygotowania do druku:
}}}}
[ y ] = [ 0 Sy 0 ] * [ y ] = [ Sy * y ]
- wyciÄ…gi barwne CMYK
Wpisywanie (biały) z1
1 0 0 1 1 1
- klisze z fotonaświetlarki
y1 zp
- matryce drukarskie (blacha)
Blokowanie (czarny) za
x cosqð -sinqð 0 x xcosqð-ysinqð Rozdzielczość liczba kropek na jednostkÄ™
ys zb
[ y ] = [ sin qð cosqð 0 ] * [ y ] = [ xsinqð+ycosqð ] dÅ‚ugoÅ›ci
y2
1 0 0 1 1 1 Raster poligraficzny metoda klasyczna
z2
z3
y3
Gęstość rastra liczba linii na jednostkę
RYSOWANIE GRUBUCH LINII
OBRÓT WZGLDEM LOKALNEGO długości
Stosowanie piórka przy użyciu maski jak przy
UKAADU WSPÓARZDNYCH Metody uzyskiwania tonów:
za=z1-(z1-z2)*[(y1-ys)/(y1-y2)]
wypełnianiu bez wielokrotnej konwersji
1) T( -xl, -yl ) - mikrowzory
zb=z1-(z1-z3)*[(y1-ys)/(y1-y3)]
wierszowej.
2) R( að ) - metoda klasyczna
zp=zb-(zb-za)*[(xb-xp)/(xb-xa)]
3) T( xl, yl ) - metoda dyfuzji błędu
Wyszukiwarka
Podobne podstrony:
AM2(ściąga) kolos1Sciaga pl Podział drukarek komputerowychdydaktyka egzamin sciagaŚciąganie drążka wyciągu górnego do klatki na maszynieściąga kol 1 statasciaga napedyściaga PRDMK Ściąga na egzaminPodstawy Systemów Okrętowych Ściaga PytaniamiŚCIĄGAściaga analizaBadanie Maszyn ściąga 1cisco kolos sciaga labkiwięcej podobnych podstron