Typografowie, programiści i matematycy, czyli przypadek estetycznie zadowalającej interpolacji



Podobne dokumenty
składa się z m + 1 uporządkowanych niemalejąco liczb nieujemnych. Pomiędzy p, n i m zachodzi następująca zależność:

VII. Elementy teorii stabilności. Funkcja Lapunowa. 1. Stabilność w sensie Lapunowa.

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

13. Równania różniczkowe - portrety fazowe

Następnie przypominamy (dla części studentów wprowadzamy) podstawowe pojęcia opisujące funkcje na poziomie rysunków i objaśnień.

dr inż. Ryszard Rębowski 1 WPROWADZENIE

Definicje i przykłady

Metody numeryczne I Równania nieliniowe

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

( ) Arkusz I Zadanie 1. Wartość bezwzględna Rozwiąż równanie. Naszkicujmy wykresy funkcji f ( x) = x + 3 oraz g ( x) 2x

II. Równania autonomiczne. 1. Podstawowe pojęcia.

Algebra liniowa z geometrią

Elementy rachunku różniczkowego i całkowego

5 Wyznaczniki. 5.1 Definicja i podstawowe własności. MIMUW 5. Wyznaczniki 25

Definicja i własności wartości bezwzględnej.

1 Pochodne wyższych rzędów

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

Geometria. Rozwiązania niektórych zadań z listy 2

Matematyka II. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr letni 2018/2019 wykład 13 (27 maja)

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

lim Np. lim jest wyrażeniem typu /, a

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

Klasa 1 technikum. Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne:

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

Dział I FUNKCJE TRYGONOMETRYCZNE

TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA SKIEROWANEGO

Wymagania edukacyjne z matematyki w XVIII Liceum Ogólnokształcącym w Krakowie, zakres podstawowy. Klasa druga.

Pochodna i różniczka funkcji oraz jej zastosowanie do rachunku błędów pomiarowych

Układy równań i nierówności liniowych

9. Podstawowe narzędzia matematyczne analiz przestrzennych

Spacery losowe generowanie realizacji procesu losowego

Programowanie celowe #1

Rozdział 2. Liczby zespolone

5. Rozwiązywanie układów równań liniowych

Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych 4. Równania różniczkowe zwyczajne podstawy teoretyczne

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

1 Równania nieliniowe

1 Układy równań liniowych

Próbny egzamin z matematyki dla uczniów klas II LO i III Technikum. w roku szkolnym 2012/2013

Liczby zespolone. x + 2 = 0.

Wstęp do równań różniczkowych

Aproksymacja funkcji a regresja symboliczna

Kształcenie w zakresie podstawowym. Klasa 2

ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL. sin x2 (1)

Wstęp do równań różniczkowych

III. Układy liniowe równań różniczkowych. 1. Pojęcie stabilności rozwiązań.

MATeMAtyka 1. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony Klasa pierwsza

WYMAGANIA EDUKACYJNE Z MATEMATYKI dla klasy I ba Rok szk. 2012/2013

Wymagania edukacyjne matematyka klasa 1 zakres podstawowy 1. LICZBY RZECZYWISTE

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Metody numeryczne. materiały do wykładu dla studentów. 7. Całkowanie numeryczne

Program zajęć pozalekcyjnych z matematyki poziom rozszerzony- realizowanych w ramach projektu Przez naukę i praktykę na Politechnikę

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

KINEMATYKA I DYNAMIKA CIAŁA STAŁEGO. dr inż. Janusz Zachwieja wykład opracowany na podstawie literatury

Interpolacja. Marcin Orchel. Drugi przypadek szczególny to interpolacja trygonometryczna

LUBELSKA PRÓBA PRZED MATURĄ 2017 poziom podstawowy

3. FUNKCJA LINIOWA. gdzie ; ół,.

1.1. Rachunek zdań: alternatywa, koniunkcja, implikacja i równoważność zdań oraz ich zaprzeczenia.

Geometria analityczna

Wprowadzenie Metoda bisekcji Metoda regula falsi Metoda siecznych Metoda stycznych RÓWNANIA NIELINIOWE

Pochodna i różniczka funkcji oraz jej zastosowanie do obliczania niepewności pomiarowych

Wykład 14. Elementy algebry macierzy

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Dlaczego nie wystarczają liczby wymierne

Dystrybucje, wiadomości wstępne (I)

0 + 0 = 0, = 1, = 1, = 0.

Funkcje dwóch zmiennych

3. KINEMATYKA Kinematyka jest częścią mechaniki, która zajmuje się opisem ruchu ciał bez wnikania w jego przyczyny. Oznacza to, że nie interesuje nas

1 Macierz odwrotna metoda operacji elementarnych

Zagadnienia do małej matury z matematyki klasa II Poziom podstawowy i rozszerzony

Wykład 4 Przebieg zmienności funkcji. Badanie dziedziny oraz wyznaczanie granic funkcji poznaliśmy na poprzednich wykładach.

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

EGZAMIN MATURALNY W ROKU SZKOLNYM 2014/2015

V. WYMAGANIA EGZAMINACYJNE

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

1. Granice funkcji - wstępne definicje i obliczanie prostych granic

Notacja Denavita-Hartenberga

Całki nieoznaczone. 1 Własności. 2 Wzory podstawowe. Adam Gregosiewicz 27 maja a) Jeżeli F (x) = f(x), to f(x)dx = F (x) + C,

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

FUNKCJE ZESPOLONE Lista zadań 2005/2006

FUNKCJA LINIOWA - WYKRES

KLUCZ PUNKTOWANIA ODPOWIEDZI

3. Macierze i Układy Równań Liniowych

Metody numeryczne. materiały do wykładu dla studentów

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Twierdzenia Rolle'a i Lagrange'a

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

Funkcje trygonometryczne w trójkącie prostokątnym

ZESPÓŁ SZKÓŁ W OBRZYCKU

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Rozdział 2. Liczby zespolone

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

y(t) = y 0 + R sin t, t R. z(t) = h 2π t

Wstęp. Ruch po okręgu w kartezjańskim układzie współrzędnych

Transkrypt:

BOGUSŁAW JACKOWSKI BOP, Gdańsk Typografowie, programiści i matematycy, czyli przypadek estetycznie zadowalającej interpolacji. Wstęp Najbardziej rozpowszechnionymi w graficznych zastosowaniach komputerowych krzywymi są wielomiany (krzywe gięte) i 3 stopnia, zwane odpowiednio B-spline ami i krzywymi Béziera. Ogólnie, krzywe gięte stopnia n, zwane z kolei wielomianami Bernsteina (por. [6], s. 4, [3] oraz [8]), zdefiniowane są następującym wzorem B(t) def = n i= ( n i )ti ( t) n i B i, () gdzieb i, i=,,..., n sąpunktamiwprzestrzeni k-wymiarowej. W praktyce oczywiście k= lub k=3; tu skupimy się na przypadku k=, n = 3, czyli na krzywych Béziera na płaszczyźnie. Krzywe Béziera wykorzystywane są w języku POSTSCRIPT (także w fontach POSTSCRIPTowych), w formatach opisu strony takich jak SVG czy PDF, oraz w graficznych programach takich jak Corel- DRAW, Adobe Illustrator czy openware owy Inkscape. W tego rodzaju zastosowaniach podstawowym zagadnieniem jest problem interpolacji, czyli łączenia krzywych Béziera w sposób gładki, estetycznie satysfakcjonujący (ang. æsthetically pleasing). Pojedynczym łukiem Béziera można opisać jedynie niezbyt skomplikowane kształty; łączenie wielu łuków Béziera daje oczywiście znacznie większe możliwości. Wydawać by się mogło, że pojęcie estetycznej satysfakcji, czyli ładności, w odniesieniu do problemu stricte matematycznego jest pozbawione sensu. Jednakże fizologia oka dostarcza cennej wskazówki. Otóż ludzkie oko zdumiewająco łatwo wyróżnia w plątaninie linii okrąg i linię prostą (zob. rysunek obok). Rozsądne, jak się wydaje, jest zatem przyjęcie hipotezy, że być może właśnie dlatego preferujemy krzywe zmieniające kierunek łagodnie (koło) lub w ogóle niezmieniające kierunku(prosta). W matematyce do badania zmian kierunku krzywej używa się wielkości zwanej krzywizną(zob. punkt 4 niżej). Łączenie krzywych giętych tak, by krzywizna możliwie mało się zmieniała, zaproponowałj.r.manning[7].okazujesięjednak,żezachowanie stałości krzywizny w punktach łączenia jest Rys.. Zadanie: znajdź odcinek i okrąg

BOGUSŁAW JACKOWSKI skomplikowane obliczeniowo i niekoniecznie potrzebne. Interesujące rozwiązanie autorstwa J. D. Hobby ego [], upraszczające w sposób istotny proces obliczeniowy dzięki pomysłowemu przybliżeniu krzywizny, zostało zastosowane przez D. E. Knutha w programie METAFONT[6], przeznaczonym w zasadzie do tworzenia fontów. Algorytm ten został później przeniesiony przez J. D. Hobby ego do METAPOSTa (modyfikacji METAFONTa, generującej wynik w języku POSTSCRIPT). Celem niniejszej pracy jest przyjrzenie się metodzie Hobby ego, wskazanie jej wad i zalet, a także porównanie z innymi metodami. To interesujący przypadek, wart popularyzacji, pokazujący, jak ważnym ogniwem między typografem, tworzącym fonty, a programistą, tworzącym narzędzie dla typografa, jest matematyk, tworzący modele rzeczywistości (tu model gładkości ) i dostarczający tym samym programiście teoretycznej podstawy do budowania narzędzia. W dalszym ciągu zakładać będziemy, że Czytelnik w zakresie matematyki ma wiedzę elementarną, to znaczy kojarzy na przykład pochodną funkcji f (t) w punkcie t z granicą lim t (f (t+ t) f (t))/ t. Szkic ten może się więc okazać mało interesujący dla matematyków, ze względu na omawianie i uzasadnianie faktów dla matematyka oczywistych. Z drugiej strony i dla niematematyków może się okazać nużący, dokładnie z tych samych względów. Jednak pomysł J. D. Hobby ego na gładkie łączenie krzywych jest niewątpliwie perłą, wartą starannego i nieco bardziej przystępnego niż w pracach[, 5] opisania. Dlatego, choć to profesjonalistom może się wydać zbędne, często podawane są formy pośrednie przekształcanych wzorów.. Wyznaczniki Zacznijmy od krótkiego przypomnienia pojęcia wyznacznika. Wyznacznik pary wektorów na płaszczyźnie, v = (x, y ), v = (x, y ), czyli wyznacznik drugiego stopnia definiuje się jako det(v, v ) x x def = x y y y x y. () Przyda się nam w dalszym ciągu następująca własność wyznacznika, łatwa do sprawdzenia bezpośrednim rachunkiem dla wyznaczników drugiego stopnia det(v +pv, v )=det(v, v +qv )=det(v, v ), (3) gdzie p i q są dowolnymi liczbami rzeczywistymi, oraz jego interpretacja geometryczna: wartość bezwzględna wyznacznika -wymiarowego to powierzchnia równoległoboku, którego krawędziami są wektory pojawiające się w definicji wyznacznika, natomiast znak wyznacznika zależy od wzajemnej orientacji wektorów w przestrzeni dlapłaszczyznykierunekkątamiędzywektoramiv iv przeciwnydokierunku wskazówek zegara daje w wyniku wyznacznik dodatni. Tu mała dygresja interpretacja powyższa jest w ogólnym wypadku na tyle ważna, że wybitny rosyjski matematyk Władimir I. Arnold w artykule poświęconym nauczaniu matematyki[] podkreślił: Wyznacznik macierzy jest(zorientowaną) objętością równoległościanu, którego krawędziami są kolumny macierzy. Gdy zaznajomi się studentów z tym sekretem (który jest starannie ukrywany w wyjałowionej algebraicznej metodzie nauczania), wówczas cała teoria wyznaczników staje się łatwa do zrozumienia[...]. Jeśli wyznaczniki są zdefiniowane w inny sposób, to każdy rozsądny człowiek znienawidzi po wsze czasy wszystkie wyznaczniki.

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 3 3. Różniczkowanie wielomianów Bernsteina Pochodną krzywej zadanej parametrycznie wyznacza się, różniczkując składowe wektora określającego krzywą. Interpretacja fizyczna pierwszej i drugiej pochodnej jest oczywista: wyobraźmy sobie (punktowy) pojazd, którego położenie wchwilitjestwyznaczoneprzez (x(t),y(t)); (x (t),y (t))określapoprostukierunek iwartośćprędkości,a(x (t),y (t)) kierunekiwartośćprzyśpieszeniapojazdu.na przykładwektoryprzeciwnieskierowanedowektorówb ()ib (),uwidocznionych na rysunku, wskazują kierunek siły odśrodkowej, która działałaby na pasażera(punktowegooczywiście)pojazduwpunktachodpowiedniob ib n. Wróćmydowzoru() naraziewpostaciogólnej.zajmiemysięwyznaczeniem wartości pierwszej i drugiej pochodnej funkcji B(t) w punktach t = i t =, czyliwpunktachwęzłowychb()= ib()=b n.jedno-idwukrotneróżniczkowanie daje w wyniku B (t)=n( t) n (B )+V(t), B (t)=(n )n( t) n (4) (( B )+(B B ))+W(t), gdzie V(t) i W(t) są pewnymi wielomianami(konkretna ich postać nas nie interesuje)takimi,żev()=w()=v()=w()=,skąd B ()=n (B ), B ()=(n )n (( B )+(B B )). (5) Dla t = otrzymuje się analogiczne zależności B ()=n (B n B n ), B ()=(n )n ((B n B n )+(B n B n )). (6) Zauważmy, że definiując pochodne znormalizowane jako B (t) (B x (t), B y (t))def = n B (t), B (t) (B (t), B możemy zależności(5) i(6) przepisać w postaci x = y (t))def (n )n B (t), (7) B ()=B, B ()=( B )+(B B ), (8) B ()=B n B n, B ()=(B n B n )+(B n B n ). (9) Interpretacja geometryczna, przedstawiona na rysunku, ułatwia zrozumienie formuł(8) i(9), a zwłaszcza zapisu drugiej pochodnej. B B B n B n B B B n B n B n B n B () B () B () B () Rys.. Interpretacja geometryczna pierwszej i drugiej pochodnej wielomianu Bernsteina

4 BOGUSŁAW JACKOWSKI B B B B B B B Rys.3.Konwencjaustalaniaznakukąta B a B b B c (owartościbezwzględnej mniejszejodπ):znakkątaowierzchołkub b skierowanegoodramieniab b B a doramieniab b B c uznajemyzazgodnyzeznakiemwyznacznika det(b a B b, B c B b );strzałkioznaczająprzyjętąorientacjękątów,szarymkolorem zaznaczonyzostałprzebiegłukubézieraokreślonegoprzezczworokąt B B 4. Krzywizna W dalszym ciągu będzie nam potrzebne ścisłe określenie pojęcia krzywizny krzywej płaskiej. Dla naszych celów przyjmiemy prostą i naturalną definicję, zgodnie z którą krzywizna krzywej płaskiej to po prostu prędkość zmiany kierunku krzywej, a dokładniej zmiana kąta liczona w stosunku do długości krzywej zob. rysunek 4. (x(t+ t), y(t+ t)) x = x(t+ t) x(t) B y=y(t+ t) y(t) (t) def φ = lim t s s ( x) +( y) φ(t+ t) φ = φ(t+ t) φ(t) (x(t),y(t)) φ(t) Rys. 4. Definicja krzywizny (t) krzywej płaskiej zadanej parametrycznie jako (x(t), y(t)); by zachować zgodność z definicją wyznacznika(), kąty skierowane przeciwnie do kierunku ruchu wskazówek zegara uważać będziemy za dodatnie(por. rysunek 3) Stosując elementarne przekształcenia wzoru na krzywiznę przedstawionego na rysunku 4, otrzymujemy φ (t)=lim t t s/ t =lim φ t t ( x/ t) + ( y/ t) = = dφ dt. () ( dx dt ) + ( dy ) dt

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 5 Zapisując pochodne z użyciem notacji zastosowanej w poprzednim punkcie, mianowiciex (t) dx dt,y (t) dy dt,istosującpodstawowewzoryrachunkuróżniczkowego orazzależnośćφ(t)=arctg( y (t) x (t) ),otrzymujemy dφ dt φ (t)=( arctan( y (t) ( x (t) )) = ) = +( y (t) x (t) ) x (t)y (t) y (t)x (t) x (t) ( y (t) +( y (t) x (t) ) x (t) ) = x (t)y (t) y (t)x (t) x (t) +y (t). () Porównując powyższy wzór z definicją wyznacznika (), bez trudu zauważymy, że licznikwzoru()tonicinnegojakwyznacznik:det((x (t),y (t)),(x (t),y (t))). To wyjaśnia nasze zainteresowanie wyznacznikiem. Do wyznaczników jeszcze będziemy mieli okazję powrócić. Łącząc równania() i(), otrzymujemy ostatecznie (t)= x (t)y (t) y (t)x (t). (x (t) +y (t) ) 3/ () Powyższe wyprowadzenie jest dalekie od matematycznej precyzji, ale uściślenie wywodu nie wydaje się zbyt trudne (by uwzględnić np. przypadek x (t)=, wystarczy zamiast funkcji arc tg użyć arc ctg). Otrzymanej formule () można nadać prostą interpretację geometryczną. Po pierwsze, linia prosta, opisana wzorem z(t) = (a x t+b x,a y t+b y ), gdzie a x, b x, a y i b y są liczbami rzeczywistymi, przy czym a x + a y /=, ma krzywiznę zerową, czego należało się spodziewać. Rozważmy więc mniej trywialny przykład, mianowicie krzywą definiującą okrąg o środku w początku układu współrzędnych, o promieniu R, obiegającą środek przeciwnie do kierunku ruchu wskazówek zegara. Krzywa taka zadana jest wzorem z(t)=(rcos(t),rsin(t)), t <π. Oczywiście z (t)=( Rsin(t),Rcos(t)) oraz z (t)=( Rcos(t), Rsin(t));zewzoru()wynikanatychmiastzależność R = (R = ) 3/ R =const. Zauważmy, że zmiana orientacji krzywej na zgodną z kierunkiem ruchu wskazówek zegara, z(t) = (R cos(t), R sin(t)), prowadzi do zmiany znaku krzywizny = R. Przykładtenwyjaśnia,dlaczegowielkość nazywasiępromieniemkrzywizny i dlaczego krzywe na płaszczyźnie zorientowane zgodnie z ruchem wskazówek zegara noszą miano zorientowanych ujemnie, natomiast krzywe zorientowane przeciwnie do ruchu wskazówek zegara zorientowanych dodatnio. Znak krzywizny jest oczywiście konsekwencją przyjętej konwencji ustalania znaku kątów(rysunki 3 i 4). W przypadku linii prostej i okręgu krzywizna jest stała, ale w ogólnym wypadku jest to wielkość lokalna. Krzywizna dodatnia oznacza, że krzywa w danym punkcie skręca w lewo, krzywizna ujemna że skręca w prawo. Punkty o zerowej krzywiźnie noszą nazwę punktów przegięcia.

6 BOGUSŁAW JACKOWSKI 4.. Krzywizna krzywych giętych Wzór na krzywiznę () dla wielomianu Bernsteina wyrażony za pomocą pochodnych znormalizowanych (7) przyjmuje postać (t)= B x (t)b y (t) B y (t)b x (t) = n B x (t)b y (t) B y (t)b x (t). (B x (t) +B y (t) ) 3/ n (B x (t) +B y (t) ) 3/ (3) Stąd,uwzględniającwzory(),(8)i(9),łatwowyznaczasiękrzywiznędlat=it= ()= n det((b ), (B B )+( B )), n B 3 ()= n (4) det((b n B n ), (B n B n )+(B n B n )), n B n B n 3 gdzie zapis V oznacza długość wektora V; stąd dalej, korzystając z własności (3), otrzymuje się wzory ()= n det((b ), (B B )), n B 3 ()= n (5) det((b n B n ), (B n B n )). n B n B n 3 Niech h, oznacza odległość (skierowaną) punktu B od prostej przechodzącej przez przez punkty i B i analogicznie niech h n,n n oznacza odległość punktu B n od prostej przechodzącej przez punkty B n i B n, przy czym h, i h n,n n mają te same znaki co wyznaczniki odpowiednio det ((B ), (B B )) i det ((B n B n ), (B n B n )) por. rysunek 5. Innymi słowy, jeśli punkt B leży na prawo od prostej skierowanej od do B, to h, <, jeśli na lewo, to h, >. I analogicznie, jeśli B n leży na prawo od prostej skierowanej od B n do B n, to h n,n n <,jeślinalewo,to h n,n n >. Zgodnie z tym, co zostało powiedziane w punkcie, wartość bezwzględna wyznacznika pary wektorów na płaszczyźnie to pole odpowiedniego równoległoboku, a zatem det((b ), (B B ))=h, B, det((b n B n ), (B n B n ))=h n,n (6) n B n B n. B h b > a α> d π β< π h a < b Rys. 5. Interpretacja geometryczna wzorów(7) dla łuku Béziera(n = 3); krzywiznęwpunktach i określająwzory(8) B

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 7 Stąd ostatecznie ()= n h, n h n,n n, ()= n B n B n B n. (7) Wyprowadzenie wzorów(7) kończy rozważania dla przypadku ogólnego. 4.. Krzywizna łuków Béziera Możemy teraz przystąpić do wyznaczenia wzorów na krzywiznę dla przypadku n = 3, czyli dla krzywych Béziera. Wzory te zastosujemy do gładkiego łączenia łuków Béziera. Znak krzywizny, jak już wiemy, zależy od konwencji ustalania znaku kąta. Znakkątawczworoboku B B (owartościbezwzględnejmniejszejodπ)określać będziemy zgodnie z przyjętą konwencją, to znaczy każdy kąt będziemy uważać za skierowany od krawędzi poprzedniej do następnej(rysunki 3 i 4). Rozważmy sytuację przedstawioną na rysunku 5 oczywiście α >, natomiast β <. Zgodnie z definicją odległości skierowanej, wprowadzonej w punkcie 4., h a < oraz h b >. Przyjmując notację zastosowaną na rysunku 5, wzory na krzywiznę (7) dla punktów krańcowych i można wyrazić następująco (niezależnie od konfiguracji wierzchołków czworoboku) h a h b b. (8) ()= 3 a, ()= 3 Teraz zajmiemy się dalszym przekształceniem wzorów (8) tak, by wyeliminować wielkości h a i h b, tj. wyrazić krzywiznę jako funkcję długości (wielkości zawsze nieujemnej) naciągów i cięciwy (odpowiednio a, b, i d) oraz kątów (skierowanych) α i β. Z rysunku 6 (zamieszczonego na następnej stronie) wynika, że c=d b sin(β)ctg(α) b cos(β)oraz h a = csin(α),czyli h a = (dsin(α) bsin(β)cos(α) bsin(α)cos(β))=bsin(α+β) dsin(α). (9) Analogicznie h b =asin(α+β) dsin(β). () Wykorzystując powyższe zależności, otrzymujemy ostatecznie wzory na krzywiznę łuku Béziera w punktach krańcowych, wyrażone za pomocą długości naciągów i kątów między naciągami a cięciwą ()= b sin(α+β) d sin(α), ()= a sin(α+β) d sin(β). 3 a 3 b () Podkreślmy raz jeszcze, że takie same wzory uzyskuje się niezależnie od konfiguracji wierzchołkówczworoboku B B,czyliznakówkątówαiβ(por.rysunek3). 4.3. Osobliwości krzywizny Matematyczne pojęcie krzywizny na ogół odzwierciedla to, co oko widzi krzywe o krzywiźnie zmieniającej się w niewielkim stopniu jesteśmy skłonni uznawać za ładnie ukształtowane. Jeśli krzywizna się wyraźnie się zmienia, to miejsce, w którym zmiana zachodzi, w większości wypadków jesteśmy w stanie wskazać na pierwszy rzut oka, bez matematycznych rozważań. Z równań() wynika jednak, że krzywizna może osiągać duże wartości, gdy odpowiednie naciągi są krótkie, a wręcz dążyć do nieskończoności w węźle, w którym jeden z naciągów ma zerową długość. Co gorsza, krzywizna nieskończona może

8 BOGUSŁAW JACKOWSKI B h a < c h b < π π B a b α> d β> Rys. 6. Szkic pomocniczy do wyprowadzenia wzoru() opisującego zależność krzywizny od kątów α i β być niezauważalna dla oka. Ilustruje to rysunek 7: dla przypadków(a) (c) wyraźnie widoczna jest zmiana krzywizny w środku; przypadki (d) (f) oko postrzega jako zbliżone do fragmentu okręgu; przypadki (g) (i) ilustrują przejście łuku Béziera do cięciwy w miarę skracania naciągów tu, paradoksalnie, krzywizna na końcach gwałtownie rośnie, choć oko tego nie dostrzega. (a) 75 5 5 λ=,57 (d),5,,5,,5 λ=,8 B (g) 3,,5,,5,,5 λ=,7 (b) 8 6 4 λ=,54 (e),,,8,6,4, λ=,5 (h) 5 5 λ=,9 (c) 5 4 3 λ=,4 B (f),,,8,6,4, λ=,46 (i) 75 5 5 λ=,3 Rys.7.Krzywizna łukubézieraojednostkowejcięciwie( =), λ długość łuku; przypadek(f) to efekt zastosowania wzoru(9)

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 9 5. Łuk Béziera a okrąg Załóżmy,żepotrafimydladanychkątówαiβ, π<α,β πidługościcięciwy d /=, wyliczyć długość naciągów ze wzorów: a= 3 ρ(α, β) d, b= σ(α, β) d, () τ a 3 τ b gdzie ρ(α, β) i σ(α, β) są pewnymi funkcjami, bynajmniej nie zadanymi jednoznacznie (zajmiemy się nimi za chwilę), a liczby (dodatnie) τ a i τ b są zadanymi naprężeniami (ang. tensions). W programach METAFONT i METAPOST naprężeniamożnazadaćwsposóbjawnyzapomocąoperatoratension([6],s.9 3 is.36,zad.4.5).najczęściejwpraktycznychzastosowaniachτ a =τ b =itakajest też wartość domyślna, przyjmowana w programach METAFONT i METAPOST. Przyjmijmychwilowo,żeτ a =τ b =.Załóżmyteż,żed=(inaczej:dobierzmy takie jednostki, by d = ). Wówczas długość wektora pierwszej pochodnej w punktacht=it=(por.formuły(5)i(6))wynosiodpowiednioρ(α, β)iσ(α, β).dlatego funkcje te noszą nazwę funkcji prędkości. Aby funkcje prędkości były użyteczne w zastosowaniach, którymi się tu zajmujemy, musi zachodzić podstawowy warunek symetrii, wynikający z tego, że zamiana zmiennych powinna prowadzić do przystającej figury geometrycznej(lustrzanego odbicia) ρ(α, β)=σ(β, α). (3) Zatem w istocie mamy do czynienia z jedną funkcją, ale wygodniej nam będzie odróżniaćfunkcjęprędkościwpunktach t=i t=. W programach METAFONT i METAPOST funkcja prędkości jest określona dość skomplikowanym wzorem heurystycznym autorstwa J. D. Hobby ego ρ(α, β)=σ(β, α)= + (sinα 6 sinβ)(sinβ 6 sinα)(cosα cosβ). (4) (+ ( 5 )cosα+ (3 5)cosβ) W pracy[], s. 3 4, podane jest rozumowanie, które doprowadziło J. D. Hobby ego do takiej formuły, a także alternatywna formuła (zdefiniowana dla < α β < π), ponoć lepiej sprawdzająca się w asymetrycznych przypadkach, ale znacznie bardziej skomplikowana obliczeniowo i trudniejsza do analizy teoretycznej ρ(α,β)= f (α,β)+γ(β)sin( ψ β ( α ( β ) ), σ(α,β)= f (α,β) γ(β)sin( ψ β ( α ) ( β ) ), (5) ) gdzie f (α,β)= mµ +µ+n, m=,67836, n=,63875, µ+ncos(ν)+n β α µ= (β α)( ( β ) ),4539, ν= α+β,753963 β ( ), (6) ( α+β ) γ(β)=,7 π β,5sin(β), ψ β(x)=π ( x+ (x )( (,3 β ( ( π )x+,5 β ). π )

BOGUSŁAW JACKOWSKI Nieco uwagi doborowi funkcji ρ i σ poświęca D.E. Knuth w zbiorze esejów[4],s.39 45,proponującmiędzyinnymiwzór sin(β) ρ(α, β)=σ(β, α)= ( +cos( α+β ( ) sin( α+β (7) ) ) i sugerując, jak go można ulepszyć. Jako pierwszy formułę tego rodzaju, ale znacznie prostszą, zaproponował J.R. Manning w cytowanej już pracy [7] (wzór Hobby ego (4) jest w istocie modyfikacją formuły Manninga) ρ(α, β)=σ(β, α)= +c cos(β)+( c)cos(α). (8) Manning sugeruje wartość dla współczynnika c. Pomysł formuły Manninga wywodzi się z łatwego do rachunkowego sprawdzenia spostrzeżenia: jeśli α = β, to for- 3 muła ρ(α)=/(+cos(α))pozwalanadobreprzybliżenieokręguzapomocąłuku Béziera. Mianowicie łuk B(t), którego oba naciągi tworzą z cięciwą o długości d kąt α i mają długość ρ(α) określoną wzorem ρ(α)= d 3 +cos(α) matęwłasność,żepunktb( )pokrywasięześrodkiemodcinkaokręguopartego o tę samą cięciwę i przechodzącego przez jej końce B() i B() pod kątem α. Taki łuk Béziera, zwłaszcza dla niezbyt dużych kątów, jest nieodróżnialny optycznie od okręgu więcej na temat precyzji takiego przybliżenia można znaleźć w[4]; por. też rysunek 7f. Podsumowując te wywody, odnotujmy, że funkcja prędkości ma w zamierzeniu być uogólnieniem, heurystycznym oczywiście, na dwa parametry funkcji ρ(α) gwarantującej możliwie dobre przybliżenie(równanie(9)) okręgu za pomocą łuku Béziera. Oczywiście pozostaje to w ścisłym związku z naszym zasadniczym celem, tzn. dążeniem do uzyskania możliwie gładkiego optycznie połączenia łuków Béziera dzięki funkcjom prędkości w rodzaju tych zdefiniowanych powyżej łuki Béziera powinny optycznie naśladować okrąg, który z racji stałej krzywizny jest idealnym kandydatem na wzorzec estetyczny. Okazuje się, że jest to spostrzeżenie zasadnicze dla ostatecznego rezultatu. 6. Gładkie łączenie łuków Béziera metoda Hobby ego Mamy wreszcie zgromadzony cały arsenał niezbędnych środków, by zmierzyć się z następującym zadaniem: dany jest ciąg n + punktów na płaszczyźnie P, P,..., P n, n >; należy połączyć te punkty łukami Béziera tak, by wynikowa krzywa prezentowała się możliwie gładko. Warunek sine qua non jest oczywisty w punktach złączenia krzywa nie powinna gwałtownie zmieniać kierunku. Oznacza to, że naciągi w punktach złączenia muszą być współliniowe. (Współliniowość naciągów jest warunkiem słabszym niż równość pochodnych. Równość pochodnych, zgodnie ze wzorami(5) i(6), oznacza dodatkowo równość długości naciągów.) (9)

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY Warunek ten nie gwarantuje jednoznaczności rozwiązania. Dodatkowym warunkiem mogłoby być żądanie zachowania krzywizny w miejscach złączenia, ale prowadziłoby to do skomplikowanego układu równań trygonometrycznych. Częstym zabiegiem, nie zawsze należycie uzasadnionym, stosowanym przez matematyków i fizyków w takich przypadkach jest zastąpienie funkcji jej przybliżeniem liniowym, w tym wypadku zastąpienie funkcji sinus funkcją liniową, a funkcji prędkości funkcją tożsamościowo równą sin(α) α, ρ(α, β) σ(α, β). (3) (Dlaformuł(4)i(8)ρ(,)=σ(,)=;formuły(5)i(7)zdefinicjisąnieokreślonedlaα=β=).Przybliżenietodajesięuzasadnićmatematyczniedlamałych(co do wartości bezwzględnej) wartości argumentów, jednakże stosować je będziemy także dla wartości argumentów znacznie odbiegających od zera. Zatem równie dobrze można przyjąć przybliżenie(3) jako heurystyczne założenie upraszczające. Stosując zależność (3) do wzoru na krzywiznę łuku Béziera w punktach skrajnych, otrzymanego z połączenia wzorów() oraz() ()= 3 ()= 3 3 3 otrzymujemy σ(α, β) d sin(α+β) dsin(α) τ b ( 3 = τ b ρ(α, β) d ) τ a ρ(α, β) d sin(α+β) dsin(β) τ a ( ( 3 = τ σ(α, β) d ) τ b ) () () def = τ b (α+β) 6α dτ a σ(α, β)sin(α+β) 6sin(α), dτ a ρ (α, β) a ρ(α, β)sin(α+β) 6sin(β) dτb, σ (α, β), () () def = τ a (α+β) 6β dτ b (3). (3) Funkcja, zdefiniowana powyżej, to krzywizna pozorna (ang. mock curvature; słowo mock oznacza także atrapę), wprowadzona przez J. D. Hobby ego w [], s. 3 4, wspomniana przez D.E. Knutha w [6], s. 3 3, i omówiona szerzej w[5], 74 77, stanowiąca klucz do problemu gładkiego łączenia krzywych Béziera: najpierw z układu równań liniowych sformułowanych na podstawie zależności (3) wyznaczamy kąty między cięciwą a naciągami, a następnie z równań () długości naciągów. 6.. Równania Na styku łuków Béziera żądać więc będziemy zachowania pozornej krzywizny, sprowadzając zadanie do rozwiązywania układu równań liniowych. Wyznaczenie tych równań to kwestia nieco żmudnych, acz elementarnych rachunków. Przyjmijmy oznaczenia i zależności przedstawione na rysunku 8, zamieszczonym na następnej stronie. Zauważmy po pierwsze, że żądanie, by naciągi w punktach złączenia były współliniowe oznacza, iż α k +β k +γ k = dla k=,,...,n, (33) gdzieγ k oznaczakątzmianykierunkułamanejp P...P n wpunkciep k.

BOGUSŁAW JACKOWSKI τ a,k k ()= k () τ b,k βk P k α k γ k P k+ P k P k α k τ a,k τ b,k β k P k+ d k = P k P k, d k = P k+ P k Rys. 8. Oznaczenia użyte przy formułowaniu układu równań liniowych(38); indeks k odnosi się(inaczej niż w[5]) do wielkości związanych z łukiem Béziera opartymocięciwęp k P k+ Podrugie,warunekzachowaniakrzywiznypozornejwpunkcieP k prowadzi do równania k () τ a,k (α k +β k ) 6β k d k τ = τ b,k (α k+β k ) 6α k d k τ k (). (34) b,k Korzystając z zależności (33), można wyeliminować wielkości β k i β k z równania(34), otrzymując τ a,k (α k α k γ k ) 3( α k γ k ) czyli τ a,k d k τ b,k d k τ b,k α k + ( ( 3 τ a,k d k τ b,k = 3 τ a,k a,k τ b,k (α k α k+ γ k+ ) 3α k d k τ =, (35) a,k + 3 τ b,k d k τ a,k γ k τ b,k ) ) α k + τ b,k d k τ α k+ = a,k γ k+. d k τb,k d k τ a,k Wprowadzając jednoliterowe oznaczenia dla wielkości znanych A k def = τ a,k def d k τb,k, B k def D k = τ b,k d k τ a,k = 3 τ a,k d k τ b,k def, C k = 3 τ b,k d k τ, a,k, E k def = B k γ k D k γ k+, otrzymujemyukładn równańliniowychzn+niewiadomymi A α + (B +C )α +D α =E, A α + (B +C )α +D α 3 =E, (38) A 3 α + ( +C 3 )α 3 +D 3 α 4 =E 3, A n α n + (B n +C n )α n +D n α n =E n. Potrzebne są zatem jeszcze dwa równania. Jeżeli wynikiem ma być krzywa zamknięta, to α n = α, czyli problem redukuje się do n niewiadomych. Brakujące równanie otrzymuje się zakładając stałość krzywiznypozornejwpunkciep =P n A α n + ( +C )α +D α =E. (39) (36) (37)

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 3 Jeżeli wynikiem ma być krzywa otwarta, to albo kąty α i α n muszą być dane jawnie, co po prostu redukuje liczbę niewiadomych o, albo trzeba poszukać innego warunku. Zanim zajmiemy się tym zagadnieniem, rozpatrzmy pewien czysto technicznyszczegół otóżkątem,którychcemywyznaczyć,jestwistocieβ n,gdyżα n znajdujesiępozałamanąp P...P n.jednakwygodniejjest zewzględunasymetrięwzorów operowaćniewiadomąα n,dlategoprzyjmiemysztucznywarunek γ n =. (4) Tymsamymzależność(33)dlakątówβ iβ n wprzypadkukrzywejotwartejprzyjmuje postać β = α γ, β n = α n. (4) Jeżeli chodzi o krzywiznę, to można na przykład założyć, że znana jest pozorna krzywizna w punktach skrajnych, zadana jawnie lub pośrednio. Pośrednim warunkiem mogłoby być żądanie równości krzywizn w punkcie skrajnym i sąsiednim: ()= ()i n ()= n (),comożnawprostysposóbuogólnić ()=ω (), ω n n ()= n (), ω, ω n. (4) W implementacji metody Hobby ego został wykorzystany ten właśnie pomysł, nie ma natomiast możliwości liczbowego zadania wartości krzywizny pozornej w danym punkcie. Dodatkowe parametry ω i ω n noszą nazwę skręcenia (ang. curl; inne znaczenie lok, kędzior). W programach METAFONT i METAPOST można zadać jawnie skręcenie na końcach ścieżki za pomocą operatora curl ([6], s. 8 i nast.); domyślna wartość skręcenia wynosi. Warunki (4) po rozwinięciu wzorów na krzywiznę pozorną z wykorzystaniem wzorów(3) przyjmują postać τb, τ a, τb, (α α γ ) 6α τ a, d τ =ω (α α γ )+6(α +γ ) a, d τb,, ω n τ b,n (α n α n ) 6α n = τ a,n (α n α n )+6α n d n τ a,n d n τb,n Porządkując równania(43) z wykorzystaniem zależności(4) otrzymujemy 3 τ a, τ a,ω τb, τb, τ τ a,ω a, τb, τ τ a,ω ( ) α ( + 3ω b, ( ) ( τb, ) α =( ) ( τ a, τb, + 3ω τb, ) γ, ) τb,n ( ω n ( τ 3ω n a,n τ τ a,n ω n τb,n a,n τb,n ) α n ( ) ( τ τ a,n a,n τb,n + 3 (44) τb,n ) α n =, ) Mnożąc pierwsze z równań (44) obustronnie przez τ a,, a drugie przez τb,n (dzięki czemu uzyskuje się wzory łatwiej porównywalne ze wzorami podanymi w[5]), otrzymujemy ostatecznie brakujące dwa równania gdzie τ 3 a, C =ω τb, +3 τ τb,n A n =ω n τ a,n C α +D α =E, A n α n +B n α n =, b,, D=ω τ a, (3 τ b,n )+τ τ b, (3 τ a, )+τ b,, E = D γ, a,n, B n =ω n τ 3 b,n τ +3 τ a,n. a,n. (43) (45) (46)

4 BOGUSŁAW JACKOWSKI Oczywiście nasuwa się pytanie o rozwiązywalność sformułowanego powyżej układu równań liniowych. W ten sposób wracamy do wyznaczników, bowiem do badania tego problemu matematycy używają właśnie wyznaczników(stopnia równego liczbie niewiadomych); odpowiednimi wektorami są kolumny(lub wiersze) współczynników układu równań. Jeżeli wyznacznik danego układu równań jest niezerowy, to układ ma jednoznaczne rozwiązanie. Nie będziemy się zajmować zaawansowaną matematyczną analizą tego konkretnego zagadnienia zainteresowanych odsyłamy do []. Poprzestaniemy na przytoczeniu bez dowodu wyniku podanego w [] (wniosek z twierdzenia ; zob. też[5], 76):jeżelidla k n przyjmiemyτ a,k 3 4,τ b,k 3 4 (wbudowaneograniczenie METAFONTa i METAPOSTa), to układy równań dla ścieżki zamkniętej (38)+(39) i otwartej (38)+(45) mają jednoznaczne rozwiązania. Ponadto zaburzenie wprowadzone w danym węźle, spowodowane np. zmianą położenia węzła, zanika wykładniczo w miarę oddalania się od tego węzła; nieco precyzyjniej: zmiana warunków w węźle k powoduje na ogół zmianę kąta w węźle j proporcjonalną do k j. Odnotować jednak należy, że są sytuacje, w których drobne zaburzenia choćby w jednym węźle mogą prowadzić do globalnych zmian kształtu krzywej wynikowej(zob.punkt6.4,rysunkii). 6.. Przypadek n = Dotychczas zakładaliśmy, że n >. Rozważania można rozszerzyć na przypadek n =, wymaga to jednak przyjęcia dodatkowych założeń. Jeżeli n = i mamy do czynienia z krzywą zamkniętą, to rozsądnie jest założyć, że jest to przypadek zdegenerowany, czyli P = P, a długość obu naciągów wynosi zero por. równanie (). Zauważmy, że METAFONTowa konstrukcja (,)..(,)..cycle odpowiada w istocie przypadkowi n = : P = (,), P = (,),P = (,)=P. Jeżeli n = i mamy do czynienia z krzywą otwartą, to przypadek zdegenerowanyp =P traktujemypodobniejakwyżej;wprzeciwnymrazieukładrównań redukujesiędodwóchrównań(45).ponieważγ n =(warunek(4)),zateme =, a tym samym α = α =, o ile wyznacznik macierzy równań się nie zeruje. Jednakże dla domyślnej wartości współczynników określających curl i tension, czyli, C =D =A =B =3,tymsamymwyznacznikukładurównań(45)jestrówny,co z kolei oznacza, że układ ten ma nieskończenie wiele rozwiązań, zatem znów musimy przyjąć dodatkowe założenie. Najprościej jest założyć, że nie zadanie żadnego zkątówimplikujezawszeα =α =. Jeżelikątα jestzadany,toα wyznaczasięzdrugiegorównaniaukładu(45), i na odwrót, jeżeli kąt α jest zadany, to α wyznacza się z pierwszego równania. W ten sposób dochodzimy do sytuacji, w której oba kąty są albo zadane jawnie, albo wyliczone pozostaje zatem tylko wyliczyć długość naciągów ze wzorów(). 6.3. Operator atleast Powyższe rozważania wyjaśniają zasadę działania prawie wszystkich META- FONTowych konstruktorów ścieżkowych. Dla kompletności omówimy jeszcze dość specyficzny operator atleast([6], s. 9, 3 oraz s. 36, zad. 4.5), modyfikujący działanie operatora tension(zob. punkt 5, równanie()). Jest to wprawdzie opera-

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 5 tor wbudowany w silnik METAFONTowy, ale w zasadzie można by zaimplementować go za pomocą makr METAFONTowych. Przepis jest następujący: w pierwszym etapie pomijamy operator(modyfikator) atleast, czyli stosujemy zwykły operator tension i sprowadzamy w ten sposób problem do znanego zagadnienia. (a) (b) (c) (d) a α b β d d Rys. 9. Implementacja operatora tension atleast: uwzględniana jest jedynie konfiguracja punktów kontrolnych przedstawiona na rysunku(d), konfiguracje(a),(b) i(c) są ignorowane a α a= dsin(β) sin(α+β) Schemat dalszego postępowania zilustrowany jest na rysunku 9. Przypuśćmy, że znaleźliśmy wszystkie naciągi, stosując wyżej opisany algorytm. Sprawdzamy teraz, czy końce cięciwy i naciągów nie tworzą w którymś z segmentów czworokąta wklęsłego. Jeżeli tak, to przedłużenie jednego z naciągów przecina drugi ten drugi naciąg skracamy, przesuwając jego koniec do punktu przecięcia(co z jednej strony oznacza zwiększenie naprężenia, a z drugiej wprowadzenie nieciągłości krzywizny pozornej). Dokładniej, długość skróconego naciągu(a na rysunku 9) wyznacza się z twierdzenia sinusów. W ten sposób można uzyskać łuki Béziera bez punktów przegięcia, aczkolwiek czasem(gdy naciąg skracający jest bardzo krótki) rezultaty mogą być zaskakujące. 6.4. Niestabilność algorytmu interpolacji problem kąta półpełnego Jednym z kluczowych kroków algorytmu Hobby ego jest wyznaczenie kątów γ k zmianykierunkułamanejp P...P n wposzczególnychwęzłach zob.rysunek8 i równanie(33). Jeżeli łamana zmienia kierunek o kąt, którego wartość bezwzględna różni się istotnie od kąta półpełnego(π), to algorytm interpolacji zachowuje się stabilnie, to znaczy małe zmiany położenia punktów P, P,...,P n powodują małe zmiany kształtu wynikowej krzywej. Niestety, dla kątów zbliżonych do kąta półpełnego pojawia się zasadniczy problem, nie będący bynajmniej specyfiką programów METAPOST i METAFONT. Jak się wydaje, jest to wręcz problem nieusuwalny, tym bardziej że w obrębie grafiki dyskretnej (ogólnie: metod numerycznych) drobne zaburzenia spowodowane ograniczoną dokładnością obliczeń, są nieuniknione. W przypadku programów METAFONT i METAPOST bezpośrednim źródłem kłopotów jest przyjęta przez autorów zasada, że wszystkie kąty mają być co do b β

6 BOGUSŁAW JACKOWSKI wartości bezwzględnej mniejsze niż π. Jeśli w obliczeniach pojawi się kąt niespełniający tej zasady, to jest sprowadzany do odpowiedniego przedziału przez dodanie lub odjęcie wielokrotności kąta pełnego π. Na przykład kąt π+ε, gdzie π >ε>, zostaniezastąpionykątem π+ε π= π+ε.jeżeli ε,tomożnasięspodziewać zachowań niestabilnych(pomijamy tu kwestię niedokładności reprezentacji liczby π w arytmetyce dyskretnej). Żeby zobaczyć, jak może przejawiać się niestabilność, rozważmy trywialny przykład cyklicznąścieżkęskonstruowanąnadwóchwęzłach,p ip.jakzostało wspomniane w podpunkcie 6., wygodnie jest myśleć o takim zadaniu jako o konstruowaniu ścieżki dla trzechpunktów, P,P ip,przy czym P =P,co oznacza, żełamanap P P skręcaokątpółpełnywpunktachp =P ip.pytanie wlewo czywprawo? Dla takiego przypadku α = α i równania (38) i (39) sprowadzają się do układu dwóch równań z dwoma niewiadomymi ( +C )α + (A +D )α =E, (47) (A +D )α + (B +C )α =E. Współczynniki po lewej stronie układu równań (47) mają bardzo prostą postać, mianowicie A =A =D =D = d, =B =C =C = d, (48) gdzie d = P P. Współczynniki E i E zależą od kątów zwrotu łamanej γ i γ (zob. równanie(33)) E = γ +γ, E = γ +γ. (49) d d Po uproszczeniu otrzymujemy 4α +α = (γ +γ ), (5) α +4α = (γ +γ ). Jeżelizałożymyskrętwlewo,czyliγ πiγ π,toα πiα π,ajeśliwprawo, czyliγ πiγ π,toα πiα π.jeżeliwięczamiastkąta πdoobliczeń zostanie użyty kąt π, to ścieżka wynikowa zmieni orientację na przeciwną. W przypadku, gdy łamana zawraca, to znaczy skręca o kąt zbliżony do kąta półpełnego, algorytm zastosowany w programach METAFONT i METAPOST pró- P (96,57745,5,93536) P (96,57745,5,93689) P P P =(,), P P P Rys..NiewielkazmianapołożeniapunktuP wpływanaorientację krzywej wynikowej(szara strzałka); krzywa po lewej stronie rysunku została utworzona METAPOSTem za pomocą konstrukcji (,)..((,) rotated 5.389).. cycle, a krzywa po prawej stronie za pomocą konstrukcji (,)..((,) rotated(5.389+.3)).. cycle

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 7 (b) (a) (d) (c) Rys.. Minimalna zmiana położenia jednego punktu może zmienić nie tylko orientację, ale i przebieg krzywej wynikowej; dla przypadku(a) punkty są rozłożonerównomiernie:p i = (i, )dla i=,,...,4;przypadek(b)odpowiada przesunięciup o 6 wgórę,przypadek(c) przesunięciup 4 o 6 wdół, aprzypadek(d) przesunięciup o 6 wdół;wewszystkichprzypadkachużyta została METAFONTowa konstrukcja P..P..P..P3..P4..cycle buje tę sytuację wykryć i na ogół wybiera kąt dodatni (zob. [5], 454). Jednakże czasami, mimo starannych zabezpieczeń, algorytm nie jest w stanie odróżnić błędów zaokrągleń od założonego celowo skrętu o kąt ujemny zbliżony do półpełnego. Teoretycznie mogłyby wystąpić przypadki γ π i γ π oraz γ π i γ π, co prowadziłoby do utworzenia ścieżki w kształcie ósemki. Okazuje się, że programy METAFONT i METAPOST mogą w pewnych przypadkach utworzyć ścieżkę o orientacji ujemnej (rysunek ), natomiast ósemka nigdy nie powstaje dla ścieżki dwuwęzłowej. Na podstawie dotychczasowych rozważań nietrudno przewidzieć, że w przypadku wielu węzłów ułożonych na linii prostej dużo łatwiej o niestabilność. Nie wdając się w szczegółową analizę tego rodzaju przypadków, poprzestaniemy na przytoczeniu jeszcze jednego przykładu, tym razem krzywej zbudowanej na 5 węzłach rozłożonych równomiernie wzdłuż linii prostej(poziomej). Przesunięcie(w pionie) jednegozpunktówo 6,czylinajmniejsządodatniąwartośćdopuszczalnąwprogramie METAFONT i standardowym (bez zwiększonej precyzji obliczeń) programie METAPOST powoduje nie tylko zmianę orientacji, ale również zmianę kształtu krzywej wynikowej zob. rysunek. 6.5. Inne szczegóły techniczne Jasne jest, że implementacja algorytmu tak skomplikowanego jak opisany powyżej obfituje w szczegóły techniczne. Wszystkich nie sposób omówić w opracowaniu tego rodzaju. Informacje na temat konkretnych rozwiązań implementacyjnych, takich na przykład jak to, że METAFONT wymusza ograniczenie na wartość funkcji prędkości(równanie(4)), zainteresowani znajdą w[5], choć trzeba uprzedzić, że zgłębianie tego dokumentu nie jest łatwym zadaniem. 7. Porównanie wybranych metod interpolacji Opisany w punkcie 6 algorytm interpolacyjny Hobby ego sprawdza się znakomicie w zastosowaniach praktycznych(pomijając rzadko trafiające się w praktyce przypadki osobliwe, omówione w podpunkcie 6.4), o czym dobrze wiedzą użytkow-

8 BOGUSŁAW JACKOWSKI P 5 P 5 P 5 P 5 P 6 P 4 P 6 P 4 P 6 P 4 P 6 P 4 P 7 P 3 P 7 P 3 P 7 P 3 P 7 P 3 P P P P P 8 P P 8 P P 8 P P 8 P P P P P t= 3 4 5 67 8 t= 3 4 5 67 8 t= 3 4 5 67 8 t= 3 4 5 67 8 λ λ λ λ warunki(5) warunki(5) warunki(53) Rys.. Porównanie metod interpolacji dla krzywej zamkniętej; skala krzywizny jest wspólna dla wszystkich przypadków (λ, podobnie jak na rysunku 7, oznacza długość ścieżki) interpolacja Hobby ego nicy programów METAFONT i METAPOST. Nie oznacza to, że algorytm ten należałoby polecać w każdej sytuacji. Czasami warto skorzystać z innych algorytmów. NiechbędziedanyjakpoprzedniociągpunktówP,P,..., P n, n>;niech dalejp k,p a k,pb k+ ip k+będąpunktamiwęzłowymiłukubézieraopartegoocięciwę P k P k+ (a ang.after,b ang.before). Najprostszym niewątpliwie sposobem połączenia węzłów jest użycie łamanej P a k =P k+ 3 (P k+ P k ), P b k =P k+ 3 (P k P k ). (5) Użytkownicy METAFONTa i METAPOSTa nie muszą w sposób jawny wyliczać naciągów takie łączenie punktów otrzymuje się za pomocą operatora --. Podobny efekt optyczny dałoby nałożenie warunków P a k = P k, P b k = P k. METAFONTowy operator ---, czyli.. tension infinity.., daje zbliżony efekt, mianowicie P a k P k, P b k P k; mimo iż w grę wchodzą rozbieżności na poziomie błędów zaokrągleń, to mogą one prowadzić do zauważalnych optycznie(i czasem dość zaskakujących) różnic w kształcie krzywej.

TYPOGRAFOWIE, PROGRAMIŚCI I MATEMATYCY 9 P 6 warunki(5) P P P P 3 P 4 P 5 warunki(5) warunki(53) interpolacja Hobby ego Rys. 3. Porównanie wybranych metod interpolacji dla przykładowego 7-punktowego zbioru danych; na krańcach nałożony jest dodatkowy warunekp =P a,p 6=P b 6 (wyjątek:interpolacjałamaną) Czasem wygładzenie naroży jest wskazane. Wówczas zastosowanie następującego wzoru: P k P b k =Pa k P k= (P k+ P k ), (5) 3 czyli jawne zadanie pochodnej(wzór(5)), może dać całkiem zadowalające efekty. Metodatamacharakterlokalny,toznaczyzmianawspółrzędnychpunktuP k wpływanawynikinterpolacjijedyniewpunktachsąsiednichp k,p k,p k+ ip k+. Metodą nielokalną, ale znacznie prostszą od metody omówionej w punkcie 6, jest założenie równości(ciągłości) pierwszej i drugiej pochodnej w punktach łączenia(zob.wzory(5)i(6)) P k P b k =Pa k P k, (P a k Pb k )+(P k P b k )=(P k P a k )+(Pb k+ Pa k ). (53) Jak już zostało odnotowane, interpolacja METAFONTowa, czyli interpolacja Hobby ego, przeważnie działa satysfakcjonująco. Dobrze ilustruje to przykład zaczerpnięty z prac [] i [7] przedstawiony na rysunku. Zauważmy, że ciągłość pierwszej i drugiej pochodnej (warunki (53)) oznacza ciągłość krzywizny (równanie()), natomiast interpolacja METAFONTowa na ogół prowadzi do nieciągłości krzywizny(rysunek, t=,4,6,8). Jednak interpolacja Hobby ego, wykazująca najmniejsze wahania krzywizny, daje w rezultacie optycznie gładszą krzywą niż krzywa uzyskana za pomocą warunku (53), Okazuje się bowiem, że nieciągłości krzywizny mogą być praktycznie niezauważalne dla oka, o ile skokowi krzywizny nie towarzyszy wyraźna zmiana kierunku krzywej (por. też uwagi poczynionie w punkcie 4.3). I odwrotnie chociaż przy łączeniu węzłów łamaną krzywizna jest stała(równa zero, z wyjątkiem węzłów, gdzie jest nieokreślona), oko natychmiast zauważa te punkty, gdyż nie jest tam zachowany kierunek krzywej. Typowym zadaniem, w którym interpolacja Hobby ego raczej się nie sprawdza, jest wizualizacja danych empirycznych METAFONT generuje krzywe zbyt

3 BOGUSŁAW JACKOWSKI obłe zob. rysunek 3. Również warunek(53), jak widać, może dać nie najlepszy efekt wykres raczej nie powinien się zapętlać. W tego rodzaju wypadkach lepiej skorzystać z możliwie najprostszej metody np.(5) lub(5). Wymienione w tym punkcie metody doczekały się oczywiście wielu modyfikacji, których nie będziemy tutaj omawiać. Nie oznacza to, że nie są one warte zainteresowania, wręcz przeciwnie dobrze wiedzieć, że znakomity bezsprzecznie METAFONTowy algorytm interpolacji czasem można z dobrym skutkiem zastąpić innym, prostszym algorytmem. Cytowana literatura. Arnold Władimir I., On teaching mathematics. 997. http://pauli.uni-muenster.de/~munsteg/arnold.html, dostęp 4.4.3, tłum. polskie: http://main3.amu.edu.pl/~wiadmat/7-6 wa wm37.pdf, dostęp 4.4.3.. Hobby John. D., Smooth, Easy to Compute Interpolating Splines. Discrete and Computational Geometry 986 vol. (). ftp://db.stanford.edu/pub/cstr/reports/cs/tr/85/47/cs-tr-85-47.pdf, dostęp 4.4.3. 3. Joy Kenneth I., Bernstein Polynomials.. http://www.idav.ucdavis.edu/education/cagdnotes/cagdnotes/ Bernstein-Polynomials.pdf, dostęp 4.4.3. 4. Knuth Donald E., Digital Typography. CSLI Publications, Stanford California 999. 5. Knuth Donald E., METAFONT: The Program, Computers& Typesetting vol. D. Addison- -Wesley, Reading Massachusetts 986. 6. Knuth Donald E., The METAFONTbook, Computers& Typesetting vol. C. Addison-Wesley, Reading Massachusetts 986. 7. Manning J. R., Continuity Conditions for Spline Curves. Computer Journal 974 vol. 7(), s. 8 86. http://comjnl.oxfordjournals.org/content/7//8.full.pdf, dostęp 4.4.3. 8. http://pl.wikipedia.org/wiki/wielomiany Bernsteina, dostęp 4.4.3. Abstract Typographers, programmers and mathematicians or the case of an æsthetically pleasing interpolation The reason for preparing this report is that the author has been convinced for many years that John D. Hobby s algorithm for connecting Bézier segments, implemented by Donald E. Knuth in METAFONT and later transferred by Hobby to METAPOST, based on the notion of a mock curvature, is a genuine pearl which deserves both proper acknowledgement and a far wider awareness of its existence. Of course, one can find nearly all the necessary details in the relevant papers by Hobby and in the METAFONT source, but, needless to say, it is not easy to dig through the publications. The present paper provides a full mathematical description of Hobby s interpolation algorithm, discusses its advantages and disadvantages (in particular, its instability) and compares Hobby s approach with a few selected simpler approaches.