Andrzej Marciniak GRAFIKA KOMPUTEROWA Wykłady dla studentów kierunku informatyka Państwowej Wyższej Szkoły Zawodowej w Kaliszu
Wykłady są przeznaczone wyłącznie do indywidualnego użytku przez studentów informatyki Państwowej Wyższej Szkoły Zawodowej w Kaliszu. Nie mogą być one powielane i rozpowszechniane ani w całości, ani we fragmentach za pomocą urządzeń elektronicznych, mechanicznych, kopiujących, nagrywających i innych, w tym również nie mogą być umieszczane ani rozpowszechniane w postaci cyfrowej zarówno w Internecie, jak i w sieciach lokalnych.
PRZEDMOWA Początki grafiki komputerowej sięgają czasów pierwszych komputerów, które mogły na drukarkach wierszowych wykonywać proste rysunki liniowe. Naukowcy dość wcześnie zdali sobie sprawę z wygody, jaką dają przekształcenia ogromnej liczby danych numerycznych, nierzadko trudnych do zinterpretowania, w sensowne i łatwo interpretowalne rysunki, wykresy i obrazy. Do gwałtownego rozwoju grafiki komputerowej doszło jednak dopiero w końcu lat siedemdziesiątych ubiegłego wieku, z chwilą znacznego potanienia mikroprocesorów i układów pamięci, co spowodowało niemal powszechną obecnie dostępność graficznych urządzeń wyświetlających (monitorów), rysujących (ploterów) i drukujących (drukarek, przede wszystkim laserowych i atramentowych). W dzisiejszych czasach zastosowanie grafiki komputerowej nie ogranicza się tylko do celów naukowych, ekonomicznych, prac inżynierskich i medycyny, ale ona sama stała się nawet dziedziną sztuki, o czym mogą świadczyć chociażby realizowane za jej pomocą filmy fabularne. Poważne zajmowanie się grafiką komputerową wymaga nie tylko dobrej znajomości współczesnej technologii komputerowej i języków programowania komputerów, ale także, a może przede wszystkim, solidnych podstaw w zakresie dwu- i trójwymiarowej geometrii analitycznej wraz z operacjami na wektorach, macierzach i różnych strukturach danych, algorytmami je przetwarzającymi oraz ruchem i optyką w sensie fizycznym. Połączenie wszystkich tych elementów w jedną logiczną całość nie jest zadaniem łatwym. Przebrnięcie przez wiele detali wynikających ze złożoności wizualizowanych obiektów zniechęciło niejednego początkowego zapaleńca. Z drugiej strony gwałtowny rozwój technologii komputerowej sprawia, że przed grafiką komputerową otwierają się wciąż nowe możliwości.
I. DWUWYMIAROWE TRANSFORMACJE GEOMETRYCZNE 1.1. Wprowadzenie Reprezentacja obiektu graficznego na ekranie sprowadza się najczęściej do określenia wyróżnionych punktów tego obiektu i ich odpowiednim połączeniu. Na przykład, w celu narysowania prostokąta należy określić jego wierzchołki i połączyć je odcinkami. Układ współrzędnych prostokątnych, w którym rysujemy obiekt na ekranie, niekoniecznie musi przy tym pokrywać się z układem współrzędnych, w którym określone są wspomniane wyróżnione punkty obiektu. Ponadto układ odniesienia obiektu może nie być układem prostokątnym obiekt może być określony np. w układzie biegunowym. Obie sytuacje powodują konieczność przekształcenia obiektu (ściślej: punktów obiektu) z jednego układu współrzędnych do drugiego, co sprowadza się do umiejętności opisywania obiektu w różnych układach współrzędnych. Innym zagadnieniem jest przekształcenie samego obiektu względem ustalonego układu współrzędnych. Przekształcenia takie służą m. in. do symulacji ruchu obiektu i mogą być opisane za pomocą przesunięcia, obrotu, skalowania i (lub) symetrii (odbicia) względem punktu i względem prostej. Zwracamy uwagę, że transformacje opisane w tym rozdziale dotyczą pojedynczych punktów obiektu, a nie np. równań algebraicznych definiujących krzywe. Układ współrzędnych ekranu (okna) graficznego w większości współczesnych języków programowania jest układem prostokątnym, w którym oś odciętych (oś x) jest skierowana w prawo, a oś rzędnych (oś y) w dół. Jest to więc układ zorientowany inaczej niż ten, do którego jesteśmy na ogół przyzwyczajeni, tj. do układu z osią rzędnych skierowaną w górę (zob. rys. 1). Kierunki osi układu współrzędnych oraz kierunek określania kątów są istotne m. in. przy wykonywaniu obrotów zarówno przy obrocie samego układu, jak i przy obrocie obiektu w ustalonym układzie współrzędnych. Z tego powodu w opisie tych przekształceń będziemy dokładnie określać, jakiego układu one dotyczą. Dla rozróżnienia obu układów, pierwszy układ (o osi y skierowanej w dół) będziemy dalej nazywać układem prawoskrętnym, a drugi lewoskrętnym (pojęcie układu prawo- i lewoskrętnego odnosi się na ogół do kartezjańskiego układu współrzędnych prostokątnych w przestrzeni zob. p. 3.1). Założymy ponadto, że jeśli informacja o zorientowaniu układu jest przemilczana, oznacza to, że odpowiednie wzory dotyczą zarówno układu lewo-, jak i prawoskrętnego.
1.2. Zmiana układu współrzędnych prostokątnych 5 Rys. 1. Prawo- (a) i lewoskr tny (b) uk»ad wspó»rz dnych prostok tnych na p»aszczyïnie 1.2. Zmiana układu współrzędnych prostokątnych Załóżmy, że na płaszczyźnie znajduje się układ współrzędnych prostokątnych o początku w punkcie O oraz osiach x (odcięta) i y (rzędna), który będziemy oznaczać. Jeśli w układzie tym znajduje się punkt P o współrzędnych (x, y), to po dowolnym przekształceniu układu do układu współrzędne punktu P zmienią się na. Związki pomiędzy współrzędnymi i (x, y) przy różnych przekształceniach układu są podane w kolejnych podpunktach. 1.2.1. Przesunięcie równoległe osi współrzędnych Jeśli układ współrzędnych prostokątnych Oxy zostanie przesunięty o wektor v ' t x i % t y j (zob. rys. 2), gdzie i oraz j oznaczają wektory jednostkowe w kierunku osi odpowiednio x oraz y, to współrzędne punktu P w starym i nowym układzie będą związane zależnością co można zapisać w postaci (1.1) (1.2) Jeśli współrzędne punktu potraktujemy w naturalny sposób jako składowe wektora dwuwymiarowego, to przekształcenia (1.2) nie da się przedstawić w postaci mnożenia wektora przez macierz. Przedstawienie takie będzie możliwe, gdy przejdziemy do współrzędnych jednorodnych, w których punkty przestrzeni dwuwymiarowej ú 2 będziemy uważać za elementy przestrzeni trójwymiarowej ú 3 leżące na płaszczyźnie z ' 1. Wówczas przekształcenie można zapisać jako macierz
6 I. Dwuwymiarowe transformacje geometryczne Rys. 2. Przesuni cie uk»adu wspó»- rz dnych (1.3) a równania (2.1) w następującej postaci wektorowej: (1.4) 1.2.2. Obrót osi współrzędnych Obrót lewoskrętnego układu współrzędnych Oxy wokół jego początku o kąt n (mierzony od osi x w kierunku przeciwnym do ruchu wskazówek zegara) powoduje powstanie układu o tym samym początku ( ) oraz osiach i tworzących z osiami x i y kąt n (zob. rys. 3). Przekształcenie to można zapisać w postaci (1.5) przy czym (1.6) Stosując współrzędne jednorodne, przekształcenie opisane wzorami (1.6) można zapisać w postaci wektorowej
1.2. Zmiana układu współrzędnych prostokątnych 7 Rys. 3. Obrót lewoskr tnego uk»adu wspó»rz dnych Rys. 4. Obrót uk»adu wspó»rz dnych ekranu (1.7) gdzie (1.8) oznacza macierz obrotu. W przypadku układu prawoskrętnego (a więc także układu współrzędnych ekranu) i mierzeniu kątów od osi x w stronę przeciwną do ruchu wskazówek zegara, wzory (1.5) (1.6) przyjmują postać (por. rys. 4) gdzie (1.9) W zapisie wektorowym otrzymujemy (1.10) (1.11) gdzie macierz
8 I. Dwuwymiarowe transformacje geometryczne (1.12) jest macierzą obrotu. Uwaga! Zastosowanie podanych wzorów w odniesieniu do współrzędnych okna ekranu i wierzchołków figur może powodować dla niektórych kart graficznych deformacje tych figur. Powodem występowania tego zjawiska jest nieuwzględnienie w przekształceniach stosunku szerokości do wysokości obrazu. Podobna sytuacja występuje przy obrocie punktów (będących wierzchołkami figur) względem początku układu współrzędnych ekranu (zob. p. 1.4.2). 1.2.3. Skalowanie względem początku układu Załóżmy, że nowy układ współrzędnych powstał ze starego przy zachowaniu początku układu i kierunku osi przez zmianę jednostek długości obu osi (zob. rys. 5). Jeśli jednostkom długości na osiach x i y układu Oxy przypiszemy odpowiednio s x jednostek na osi i s y jednostek na osi układu, to otrzymamy przekształcenie (1.13) w którym (1.14) przy czym s x 0 i s y 0. Gdy zastosujemy współrzędne jednorodne, to macierzą przekształcenia będzie macierz postaci (1.14) a wzory (1.13) będzie można zapisać następująco: (1.16)
1.2. Zmiana układu współrzędnych prostokątnych 9 Rys. 5. Skalowanie wzgl dem pocz tku uk»adu 1.2.4. Odbicia względem początku układu Różne odbicia osi układu współrzędnych względem jego początku, zwane też symetriami względem osi, prowadzą do powstania nowych układów współrzędnych o osiach skierowanych w przeciwne strony. Jeśli w prawoskrętnym układzie współrzędnych (a więc takim, jak układ współrzędnych ekranu) dokonamy odbicia osi y względem osi x, to otrzymamy układ lewoskrętny (zob. rys. 6). W tym nowym układzie współrzędne punktu są określone zależnościami (1.17) które można zapisać w postaci (1.18) Rys. 6. Odbicie osi y wzgl dem osi x
10 I. Dwuwymiarowe transformacje geometryczne W przypadku odbicia osi x względem osi y mamy (1.19) gdzie (1.20) Nowy układ współrzędnych, podobnie jak poprzednio, jest układem lewoskrętnym. W zapisie wektorowym (we współrzędnych jednorodnych) wzory (2.17) i (2.20) mają postać odpowiednio (1.21) i (1.22) gdzie (1.23) i (1.24) oznaczają macierze odpowiednich przekształceń. Zauważmy, że złożenie symetrii osi układu względem osi x, a następnie względem osi y, jest działaniem przemiennym i jest równoważne obrotowi układu o 180, tzn. zachodzą równości 1.2.5. Odwrotne przekształcenia układu współrzędnych Dla każdego z przekształceń układu współrzędnych, opisanych w poprzednich punktach (1.2.1 1.2.4), istnieje przekształcenie odwrotne. Przekształcenia te są określone zależnościami (1.25)
1.3. Zmiana układu współrzędnych prostokątnych na biegunowe i na odwrót 11 Pierwsze z nich jest przesunięciem układu w kierunku przeciwnym, drugie obrotem układu w kierunku przeciwnym (zgodnym z ruchem wskazówek zegara), a trzecie skalowaniem układu w stosunku 1/s x wzdłuż osi x i 1/s y wzdłuż osi y. Zwróćmy uwagę, że przekształcenia odwrotne do odbić względem osi wyrażają się tymi samymi wzorami, co odbicia pierwotne. Oznacza to, że w celu przejścia od powszechnie stosowanego układu lewoskrętnego do układu zorientowanego tak, jak układ współrzędnych ekranu, można posłużyć się wzorami (1.17). 1.3. Zmiana układu współrzędnych prostokątnych na biegunowe i na odwrót W pewnych zastosowaniach jest wygodnie przedstawiać obiekty graficzne w biegunowym układzie współrzędnych (zob. rys. 7). W układzie tym współrzędnymi punktu (zwanymi współrzędnymi biegunowymi) są: odległość D punktu od początku układu (zwanego biegunem) i kąt T 0 [0, 2B), jaki tworzy kierunek od bieguna do punktu z wyróżnionym kierunkiem przechodzącym przez biegun (zwanym osią biegunową). Liczby D i T nazywa się odpowiednio amplitudą i promieniem wodzącym danego punktu. Jeśli biegun umieścimy w początku układu współrzędnych ekranu, a oś biegunową skierujemy tak, by pokrywała się z osią odciętych x, to pomiędzy współrzędnymi prostokątnymi (x, y) i biegunowymi (D, T) tego samego punktu zachodzą następujące zależności (por. rys. 8) oraz dla x 2 % y 2 > 0: (1.26) (1.27) Rys. 7. Biegunowy uk»ad wspó»rz dnych Rys. 8. Zwi zek pomi dzy uk»adem wspó»rz dnych ekranu i uk»adem biegunowym Z ostatnich dwu wzorów oraz z faktu, iż T 0 [0, 2B), wynika że
12 I. Dwuwymiarowe transformacje geometryczne (1.28) Przy zamianie współrzędnych lewoskrętnego układu prostokątnego na współrzędne biegunowe, zamiast wzorami (1.26) (1.28), należy posługiwać się następującymi zależnościami (por. rys. 9): oraz gdzie x 2 % y 2 > 0, skąd 1.4. Transformacje geometryczne Przez pojęcie transformacje geometryczne należy rozumieć przekształcenia obiektu graficznego względem pewnego ustalonego układu współrzędnych. Ponieważ najprostszym obiektem graficznym jest punkt, a płaskie obiekty złożone mogą być utożsamiane ze zbiorem punktów na płaszczyźnie, dlatego nasze rozważania ograniczymy do przekształceń punktów.
1.4. Transformacje geometryczne 13 Podstawowymi przekształceniami punktów na płaszczyźnie są: przesunięcie (translacja), obrót, skalowanie oraz symetria względem punktu i prostej. Każde inne przekształcenie jest złożeniem tych podstawowych przekształceń (zob. p. 1.5). Początkowe położenie punktu P w prostokątnym układzie odniesienia określają jego współrzędne (x, y). Wskutek wykonanego przekształcenia otrzymujemy punkt o współrzędnych. Podanie zależności pomiędzy współrzędnymi punktów P i przy wspomnianych przekształceniach jest celem kolejnych podpunktów. 1.4.1. Przesunięcie Operację T v przesunięcia o wektor v ' t x i % t y j punktu P(x, y) do punktu rys. 9) można zapisać w postaci (zob. (1.29) gdzie (1.30) Jeśli użyjemy współrzędnych jednorodnych (zob. p. 1.2.1), to wzory (1.30) można zapisać w następującej postaci wektorowej (1.31) gdzie macierz (1.32) jest macierzą przesunięcia. Rys. 9. Przesuni cie punktu
14 I. Dwuwymiarowe transformacje geometryczne 1.4.2. Obrót Obrót punktu P o kąt n wokół początku lewoskrętnego układu współrzędnych określa przekształcenie w którym (por. rys. 10) (1.33) (1.34) Rys. 10. Obrót punktu wokó» pocz tku lewoskr tnego uk»adu wspó»- rz dnych Rys. 11. Obrót punktu wokó» pocz tku uk»adu wspó»rz dnych ekranu W układzie prawoskrętnym (a więc także w układzie współrzędnych ekranu) obrót punktu o kąt n wokół początku układu jest określony zależnością
1.4. Transformacje geometryczne 15 (1.35) gdzie (por. rys. 11) (1.36) Jeżeli współrzędne punktów P i wyrazimy we współrzędnych jednorodnych, to zapis wektorowy przekształcenia (1.33) (1.34) będzie następujący: (1.37) gdzie (1.38) oznacza macierz obrotu, a dla przekształcenia (1.35) (1.36) otrzymamy (1.39) z macierzą obrotu (1.40) 1.4.3. Skalowanie Operacja skalowania obiektu względem początku układu współrzędnych polega na przekształceniu każdego jego punktu zgodnie z zależnością (zob. rys. 12) (1.41) gdzie (1.42) W przekształceniu tym dodatnie stałe skalowania s x i s y oznaczają zmianę odległości punktu w kierunku osi odpowiednio x i y. Jeśli stałe te są większe od jedności, to następuje powiększenie tych odległości, a gdy są mniejsze od jedności zmniejszenie. We współrzędnych jednorodnych macierzą przekształcenia S sx,s y jest macierz postaci
16 I. Dwuwymiarowe transformacje geometryczne (1.43) a wzory (2.42) można zapisać następująco: (1.44) Rys. 12. Skalowanie punktu 1.4.4. Symetrie względem osi i względem początku układu W wyniku odbicia symetrycznego punktu P o współrzędnych (x, y) względem osi x otrzymujemy punkt, którego współrzędne określone są następującymi wzorami: co można zapisać w skrócie (1.45) (1.46) W przypadku odbicia symetrycznego względem osi y mamy (1.47) co będziemy zapisywać w postaci (1.48) Jeśli współrzędne punktów P i przekształceń będą miały postać zapiszemy we współrzędnych jednorodnych, to macierze
1.4. Transformacje geometryczne 17 (1.49) oraz (1.50) Rys. 13. Symetria punktu wzgl dem osi i wzgl dem pocz tku uk»adu wspó»rz dnych Porównanie wzorów (1.17) i (1.20) z wzorami odpowiednio (1.45) i (1.47) (lub macierzy (1.23) i (1.24) z macierzami odpowiednio (1.49) i (1.50)) prowadzi do wniosku, że po odbiciu jednej osi prostokątnego układu współrzędnych względem drugiej, współrzędne punktu są takie same, jak po jego symetrii względem osi. Nie oznacza to jednak równoważności przekształceń są one jakościowo różne. W pierwszym przypadku punkt nie zmienia swojego położenia na płaszczyźnie (zmianie ulega układ odniesienia), a w drugim następuje przekształcenie punktu (w ustalonym układzie współrzędnych). Zauważmy, że złożenie symetrii punktu względem osi x, a następnie względem osi y (lub na odwrót najpierw względem osi y, a potem względem osi x) jest równoważne symetrii tego punktu względem początku układu współrzędnych (zob. rys. 13). Przekształcenie to możemy zatem zapisać w postaci przy czym
18 I. Dwuwymiarowe transformacje geometryczne Zwróćmy także uwagę na fakt, że złożenie przekształceń M x i M y jest równoważne obrotowi punktu o kąt 180 (&180 ). 1.4.5. Odwrotne transformacje geometryczne Do wszystkich transformacji geometrycznych opisanych w poprzednich podpunktach (1.4.1 1.4.4) istnieją transformacje odwrotne, które są określone zależnościami (1.51) 1.5. Przekształcenia złożone Złożone transformacje geometryczne mogą być skonstruowane z przekształceń elementarnych opisanych w poprzednim punkcie. To samo dotyczy złożonych przekształceń prostokątnego układu współrzędnych, którego elementarne przekształcenia zostały podane w p. 1.2. Ponieważ w grafice komputerowej o wiele częściej spotykamy się z koniecznością wykonania złożonych przekształceń współrzędnych punktów względem ustalonego (prostokątnego) układu współrzędnych, w dalszym ciągu pominiemy problem złożonych przekształceń samego układu odniesienia. Na podstawie analogii odpowiednich przekształceń elementarnych i materiału dotyczącego złożonych transformacji geometrycznych (przedstawionego poniżej), Czytelnik z pewnością potrafi samodzielnie skonstruować odpowiednie wzory dla złożonych przekształceń układu współrzędnych. Przy opisywaniu przekształceń złożonych jest wygodnie posługiwać się współrzędnymi jednorodnymi (zob. p. 1.2.1). Wówczas przekształcenia te można zdefiniować za pomocą iloczynów odpowiednich macierzy przekształceń elementarnych i wektora zawierającego wspomniane współrzędne. Przypominamy, że współrzędne punktu po przekształceniu oznaczamy primami, tj.. 1.5.1. Złożenie dwu translacji, obrotów i skalowań Jeśli punkt P zostanie przesunięty o wektor v 1 do punktu, po czym punkt zostanie przesunięty o wektor v 2 do punktu, to na podstawie wzoru (1.29) mamy skąd Przyjmując, że (1.52)
1.5. Przekształcenia złożone 19 gdzie i oraz j oznaczają wektory jednostkowe osi odpowiednio x i y, przekształcenie (1.52) można we współrzędnych jednorodnych zapisać w postaci (por. wzory (1.31) i (1.32)) gdzie macierz (1.53) jest macierzą przesunięcia. Z zależności (1.53) wynika, że translacja jest operacją przemienną, co oznacza, że kolejność wykonywania przesunięć jest dowolna. Ponadto z zależności tej widać, że w celu przesunięcia punktu o sumę dwu (lub większej liczby) wektorów, można najpierw obliczyć wektor będący sumą danych wektorów, a następnie wykonać jedno przesunięcie o ten właśnie wektor. Translacja jest więc także operacją addytywną. Obrót punktu względem początku układu współrzędnych, podobnie jak translacja, jest operacją przemienną i addytywną. Oznacza to, że we współrzędnych jednorodnych dla układu lewoskrętnego mamy gdzie macierz jest określona wzorem (1.38), a dla układu prawoskrętnego (w tym układu współrzędnych ekranu) przy czym oznacza macierz określoną wzorem (1.40). Operacja skalowania posiada inne własności niż translacja i obrót. Jeśli punkt P przekształcimy najpierw do punktu, po czym punkt do punktu, tj. czyli to na podstawie wzoru (1.44) mamy (1.54)
20 I. Dwuwymiarowe transformacje geometryczne Z wzoru (1.54) wynika, że skalowanie jest operacją multiplikatywną. W celu dwu- lub kilkakrotnego przeskalowania punktu można zatem najpierw obliczyć iloczyn odpowiednich stałych skalowania (oddzielnie w kierunku osi x i y), po czym dokonać jednego skalowania ze stałymi równymi otrzymanym iloczynom. 1.5.2. Obrót wokół ustalonego punktu Niech na płaszczyźnie xy znajduje się ustalony punkt R o współrzędnych (x R, y R ). Obrót punktu P wokół punktu R o kąt n prowadzi do punktu, który można uzyskać za pomocą następujących, kolejno wykonywanych przekształceń (zob. rys. 14):! przesunięcia punktu P o wektor & x R i & y R j, w wyniku czego otrzymujemy punkt P 1 (przy tym przesunięciu punkt R zostaje przekształcony na punkt będący początkiem układu współrzędnych),! obrotu punktu P 1 wokół początku układu współrzędnych o kąt n w ten sposób otrzymamy punkt P 2,! przesunięcia punktu P 2 o wektor x R i % y R j, co daje szukany punkt. Rys. 14. Obrót punktu wokó» ustalonego punktu Jeśli użyjemy współrzędnych jednorodnych, to macierzą obrotu punktu P wokół punktu R o kąt n będzie macierz, będąca iloczynem macierzy przekształceń składowych. Dla układu lewoskrętnego macierz ta będzie miała postać (zob. wzory (1.32) i (1.38)) (1.55)
1.5. Przekształcenia złożone 21 a dla układu prawoskrętnego (w tym układu współrzędnych ekranu) na podstawie wzorów (1.32) i (1.40) otrzymujemy (1.56) gdzie v ' x R i % y R j. Z zależności (1.55) mamy a z wzoru (1.56) wynika, że 1.5.3. Skalowanie względem ustalonego punktu Operację skalowania względem ustalonego punktu S o współrzędnych (x S, y S ) można przeprowadzić podobnie, jak obrót względem ustalonego punktu. Jeśli operacja ta ma przekształcić punkt P w punkt, to należy (zob. rys. 15):! przesunąć punkt P o wektor & x S i & y S j, w wyniku czego otrzymamy punkt P 1,! przeskalować punkt P 1 o zadane stałe skalowania s x i s y, co prowadzi do otrzymania punktu, P 2! przesunąć punktu P 2 o wektor x S i % y S j, co daje punkt. Macierzą złożenia tych przekształceń jest (zob. wzory (1.32) i (1.43)) skąd pomiędzy współrzędnymi punktu i P wynikają związki
22 I. Dwuwymiarowe transformacje geometryczne Rys. 15. Skalowanie wzgl dem ustalonego punktu 1.5.4. Ogólne równanie transformacyjne Każde z dotychczas opisanych przekształceń geometrycznych jest przypadkiem szczególnym przekształcenia ogólnego, zwanego przekształceniem afinicznym, czyli liniowym, w którym obrazem punktu P o współrzędnych (x, y) jest punkt o współrzędnych, przy czym (1.57) gdzie ae & bd 0 (warunek ten zapewnia istnienie przekształcenia odwrotnego, które przeprowadza punkt w punkt P). W zapisie wektorowym (we współrzędnych jednorodnych) równania (1.57) mają postać (1.58) Uwaga! Ogólna postać wzorów określających przekształcenie afiniczne nie zależy od zorientowania osi prostokątnego układu współrzędnych. Jednakże dla tego samego przekształcenia w układzie prawo- i lewoskrętnym wartości współczynników mogą być różne. Z równania (1.58) (lub (1.57)) można otrzymać wszystkie dotąd podane wzory dotyczące transformacji geometrycznych (zob. tabela 1). Ich szczególnymi przypadkami, nie opisanymi w poprzednich podpunktach, są jednokładność i powinowactwo prostokątne, dla których wzory wynikają z przyjęcia dla współczynników a, b, c, d, e i f wartości podanych w tabeli 1. Definicje tych przekształceń podajemy poniżej.! Jednokładnością o środku w punkcie S i skali k 0 nazywamy przekształcenie, w którym obrazem punktu P jest punkt spełniający warunek S ' ksp (zob. rys. 16). Gdy k ' &1, to jednokładność jest symetrią o środku w punkcie S.
1.5. Przekształcenia złożone 23! Powinowactwem prostokątnym o osi px % qy % r ' 0 (jest to równanie prostej) i stosunku k 0 nazywamy odwzorowanie, w którym obrazem punktu P jest taki punkt, że Q ' kqp, gdzie Q oznacza punkt będący rzutem prostokątnym punktu P na oś (zob. rys. 17). Jeśli k ' &1, to powinowactwo prostokątne jest symetrią osiową. Rys. 16. Jednok»adnoу Rys. 27. Powinowactwo prostok tne Tabela 1. Współczynniki przekształcenia afinicznego xn ' ax % by % c, yn ' dx % ey % f w przypadkach szczególnych (w układzie współrzędnych ekranu) Przekształcenie Współczynniki a, b, c Współczynniki d, e, f Uwagi Przesunięcie a = 1 b = 0 c = t x Obrót wokół początku układu Obrót wokół ustalonego punktu Skalowanie względem początku układu Skalowanie względem ustalonego punktu a ' cos n b ' sin n c ' 0 a ' cos n b ' sin n c ' & x R cos n % & y R sin n % x R a ' s x b ' 0 c ' 0 a ' s x b ' 0 c ' (1 & s x )x R d = 0 e = 1 f = t y d ' & sin n e ' cos n f ' 0 d ' & sin n e ' cos n f ' & x R sin n % % y R cos n % y R d ' 0 e ' s y f ' 0 d ' 0 e ' s y f ' (1 & s y )y R t x i t y oznaczają składowe wektora przesunięcia n oznacza kąt obrotu mierzony w kierunku przeciwnym do ruchu wskazówek zegara. n oznacza kąt obrotu mierzony w kierunku przeciwnym do ruchu wskazówek zegara, a (x R, y R ) współrzędne punktu, wokół którego następuje obrót. s x i s y oznaczają stałe skalowania, które określają zmianę odległości punktu w kierunku osi x i y. s x i s y oznaczają stałe skalowania (określają one zmianę odległości w kierunku osi x i y). Skalowanie następuje względem punktu (x R, y R ).
24 I. Dwuwymiarowe transformacje geometryczne Tabela 1. (cd.) Przekształcenie Współczynniki a, b, c Współczynniki d, e, f Uwagi Symetria względem osi x Symetria względem osi y a ' 1 b ' 0 c ' 0 a ' & 1 b ' 0 c ' 0 Symetria osiowa a ' & (p 2 & q 2 )/(p 2 % q 2 ) b ' & 2pq/(p 2 % q 2 ) c ' & 2pr/(p 2 % q 2 ) Powinowactwo prostokątne Symetria względem początku układu Symetria względem ustalonego punktu Jednokładność a ' (kp 2 % q 2 )/(p 2 % q 2 ) b ' (k & 1)pq/(p 2 % q 2 ) c ' (k & 1)pr/(p 2 % q 2 ) a ' & 1 b ' 0 c ' 0 a ' & 1 b ' 0 c ' 2x R a ' k b ' 0 c ' (1 & k)x S d ' 0 e ' & 1 f ' 0 d ' 0 e ' 1 f ' 0 d ' & 2pq/(p 2 % q 2 ) e ' (p 2 & q 2 )/(p 2 % q 2 ) f ' & 2qr/(p 2 % q 2 ) d ' (k & 1)pq/(p 2 % q 2 ) e ' (p 2 % kq 2 )/(p 2 % q 2 ) f ' (k & 1)qr/(p 2 % q 2 ) d ' 0 e ' & 1 f ' 0 d ' 0 e ' & 1 f ' 2y R d ' 0 e ' k f ' (1 & k)y S Osią symetrii jest prosta o równaniu px % qy % r ' 0. k 0 oznacza stosunek powinowactwa, a osią powinowactwa jest prosta o równaniu px % qy % r ' 0. Punkt (x R, y R ) jest środkiem symetrii. k 0 oznacza skalę jednokładności, a punkt (x S, y S ) jej środek.