Styczne w ścieżkach Beziera

Chciałbym krótko omówić ciekawe zagadnienie, a mianowicie rysowanie linii krzywej stycznej do prostej. Niby nic skomplikowanego - okazuje się jednak, że wśród programów komputerowych jeden z nich zachowuje dość nietypowo. Chodzi o Adobe Illustrator. Problem polega na tym, że obsługuje on wyłącznie dwa rodzaje węzłów: gładki i ostry. Segmenty natomiast nie mają żadnych dodatkowych właściwości. Pozostałe - znane mi - programy do grafiki wektorowej mają wbudowane inne funkcje pomocne do wykonania tego na pozór prostego zadania. Niniejsze porównanie będzie dotyczyć następujących programów:

Celowo użyłem starych wersji programów Corel Draw oraz FreeHand - dlatego, że chciałbym przez to pokazać że funkcja - której tak bardzo brakuje mi w Illustratorze - istniała w innych programach zdecydowanie wcześniej. Jeżeli chodzi o FreeHand-a to nie udało mi się uzyskać dostępu do jeszcze starszych wersji, ale znalazłem informację, że specjalny rodzaj węzła pozwalający na uzyskanie styczności linii prostej z krzywą (ang. connector point) był wprowadzony przez firmę Aldus już w 1989 roku (InfoWorld Volume 11, Issue 8, str 69). Nie mam dostępu do nowszych wersji Illustratora, ale z tego co mi wiadomo - CS4 również nie ma węzłów docenionych przez użytkowników programu FreeHand. A więc można powiedzieć że w tej kwestii Adobe jest prawie 20 lat wstecz za swoją konkurencją. Oczywiście - tego typu stwierdzenie jest mocno naciągane, ponieważ autorzy programu celowo ustalili zakres jego funkcji tak, aby uniknąć tworzenia dodatkowego okna dokowanego i całą funkcjonalność dotyczącą tworzenia ścieżek przenieść na narzędzia z przybornika (Pen Tool, Add - Delete Anchor Point Tool, Convert Anchor Point Tool, Direct Selection Tool). Spójrzmy zatem jak przestawia się idea rysowania ścieżek w omawianych przeze mnie programach. Poniższa tabela ilustruje zestawy funkcji pomocnych przy tworzeniu stycznej.

program segment
prosty
segment
krzywy
węzeł
gładki
wezeł
ostry

connector
point

przyciąganie
uchwytów kontrolnych1
usuwanie
uchwytów kontrolnych2
Inkscape 0.46 tak tak tak tak nie nie nie
CorelDraw! 2.0 tak tak tak tak nie nie nie
Aldus FreeHand 4.0 nie nie tak tak

tak

tak tak
Adobe Illustrator CS2 nie nie tak tak nie tak tak

Wyjaśnienie

  1. Przyciąganie uchwytów kontrolnych do węzłów w tej samej ścieżce
  2. Usuwanie uchwytów kontrolnych jest równoznaczne z automatycznym wyrównaniem ich z węzłem, przy którym się znajdują.

Widać wyraźnie, że FreeHand ma najwięcej funkcji. Nie dziwne, że graficy starej daty docenili go jako narzędzie do tworzenia ścieżek Beziera. Na uwagę również zasługuje to, że zarówno Illustrator, jak i FreeHand nie mają możliwości zmiany rodzaju segmentu na krzywy, lub prosty, lecz mają możliwość usuwania uchwytów kontrolnych, co daje ten sam efekt i uproszcza działanie programu. Jakie ma to wszystko znaczenie w praktyce? Bardzo duże, ponieważ wyznacza sposoby tworzenia ścieżek, a w szczególności stycznych.

Segment prosty: Inkscape i Corel

Po narysowaniu ścieżki - jeden z segmentów należy oznaczyć jako segment linii prostej - drugi natomiast jako krzywą. Węzeł między nimi powinien być gładki. Należy zwrócić uwagę na to, że w Inkscape węzeł między segmentami - mimo, że oznaczony jako gładki - staje się naprawdę gładki dopiero przy próbie przesunięcia jego uchwytu kontrolnego.

Connector point: FreeHand

FreeHand nie obsługuje zmiany rodzaju segmentu tak jak Corel i Inkscape, tutaj mamy do czynienia z tzw. "connector point". Wpływa on znacząco na położenie uchwytów kontrolnych. Dzięki temu specyficznemu węzłowi ramiona obu uchwytów kontrolnych są skierowane do węzłów przeciwległych do "connector point". A więc mimo, że nie możemy wybrać segmentu i oznaczyć go jako prosty, możemy ucznić go prostym za pomocą connectora. Kiedy ramie uchwytu kontrolnego znajdujące się po tej samej stronie węzła, po której znajduję się segment krzywy będzie miało ten sam kierunek, co prosta - wtedy styczność będzie zachowana. Problemem może być tylko ramię uchwytu kontrolnego znajdujące się po stronie segmentu prostego. Powinno ono być skierowane do węzła początkowego tego segmentu - niestety "connector point" na to nie pozwala. Pozwala natomiast na usunięcie uchwytu kontrolnego, dzięki czemu można segment wyprostować. Ta technika działa roku od 1989 aż do 2004, kiedy wyszła ostatnia wersja Freehand-a. Ciekawe jest również to, że ikona "connector point" wyraźnie przedstawia styczną. Mało tego - identyczny rodzaj węzła w programie FontForge (do tworzenia czcionek) został nazwany jako "tangent point", więc można przypuszczać, że jedynym zastosowaniem specyficznego punktu z FreeHanda jest właśnie tworzenie stycznych.

Przyciąganie uchwytu kontrolnego: Illustrator, FreeHand

Uważam, że produkty firmy Adobe są bardzo dobrej jakości, jednak w Illustratorze brakuje mi (i nie tylko mi) narzędzia, które pozwoli zachować logikę konstrukcji stycznych tak jak w Corelu, lub FreeHandzie. Ci, którzy pracowali w innych programach i przesiadają się na Illustratora zapewne zauważyli, że w niektórych sytuacjach należy zmienić sposób myślenia. Podobnie jest ze stycznymi. Nie mamy tu ani "connector points", ani możliwości zmiany rodzaju segmentu, ale mimo wszystko możemy utworzyć styczną. Jak? Po prostu należy tak przesunąć uchwyt kontrolny węzła gładkiego, aby stykał się dokładnie z węzłem segmentu prostego. Wtedy segment pozostanie prosty, a segment krzywy będzie do niego styczny. Tak się szczęśliwie składa, że Illustrator dobrze przyciąga uchwyty kontrolne do węzłów, więc wyrównanie nie będzie trudne. Jedyną różnicą między Illustratorem, a wcześniej omówionymi programami jest to, że przy każdej zmianie położenia węzła gładkiego, lub uchwytu kontrolnego po stronie segmentu krzywego - należy wyrównać uchwyt kontrolny po stronie segmentu prostego, tak aby stykał się z węzłem.

Przykłady

Na uwagę zasługuje to, że FreeHand jest jedynym spośród testowanych programów, w którym można narysować styczną dwoma sposobami. Po wycowaniu programu FreeHand ze sprzedaży firma Adobe wyraźnie zasugerowała użytkownikom FreeHanda, aby przerzucili się na Illustratora, jednak będzie należało jeszcze trochę poczekać zanim dorówna on FreeHand-owi w kwestii tworzenia stycznych.

Oto krótki film ilustrujący sposoby wykonania linii krzywej stycznej do linii prostej w omawianych przeze mnie programach:


Powyższe opracowanie może być publikowane wyłącznie z zachowaniem następującej licencji:
Creative Commons - Uznanie autorstwa-Bez utworów zależnych 3.0 Polska
http://creativecommons.org/licenses/by-nd/3.0/pl/
Autor: Jan Domański