Schemat rozwiązania problemu znalazłem m.in. w książce I.O. Angella „Wprowadzenie do grafiki komputerowej”. Z kolei publikacja J.R. Truckenbroda „Computer-Assisted Education In The Visual Arts” naprowadza na szereg innych ciekawych zastosowań tej techniki programistycznej.
Pomysł polega na przedstawieniu pewnych wybranych (najczęściej skrajnych) stadiów ruchu obiektu w postaci łamanych, a następnie na ich podstawie wyliczenia i wykreślenia żądanej ilości „stadiów pośrednich”.
Do zapisania programu wybrałem Logo, ze względu na kilka jego ważnych zalet. Po pierwsze grafika żółwia umożliwia posługiwanie się układem współrzędnych prostokątnych. Po drugie, program w Logo zawsze stanowi strukturę otwartą; użytkownik ma swobodę manipulowania procedurami programu oraz jego rozszerzenia, co jest szczególnie ważne przy tworzeniu grafiki.
Program stanowi zbiór procedur narzędziowych, pozwalających na tworzenie i transformację wyżej opisanych łamanych. Łamaną opisujemy przy pomocy listy, stanowiącej ciąg punktów. Punkt z kolei, zgodnie z konwencją Logo, zapisany jest w formie listy dwuelementowej, zawierającej jego współrzędne.
Opiszmy działanie procedur programu.
PRZEOBRAZ :L1 :L2 :Usuwanie :IleKroków
Utworzenie i wykreślenie na ekranie łamanych :L1 i :L2 oraz wszystkich faz pośrednich, których ilość wyznacza parametr :IleKroków. Parametr :Usuwanie może przyjąć wartość „T lub „N i określa czy fazy pośrednie rysunku mają być ukazywane kolejno czy wszystkie naraz (wszystkie zamieszczone ilustracje powstały przy osuwanie = „N). Przykładem wywołania może być:
PRZEOBRAZ :Kwadrat1 :Kwadrat2 „N 10
RYSUJ :StanPióra :L
Narysowanie łamanej :L. Stan pisaka żółwia określa parametr :StanPióra. Procedurę wywołujemy np.
RYSUJ [PENDOWN] [[40 40] [40 40]]
PRZESUŃ :L :Wektor
Przesunięcie wszystkich punktów łamanej o nazwie :L o wektor określony przez drugi parametr. Należy zwrócić uwagę, że :L oznacza nazwę zmiennej a nie jej wartość, np.
PRZESUN „Kwadrat1 [60 0]
KASUJ :L
Nadaje zmiennej o nazwie L wartość listy pustej (pustej łamanej).
NOTUJ :L
Dołączenie do łamanej o nazwie :L punktu wskazanego przez aktualną pozycję żółwia. Oto przykład użycia w powiązaniu z procedurą KASUJ:
KASUJ „Kwadrat1 HOME
NOTUJ „Kwadrat1
REPEAT 4 [FD 40 RT 90 NOTUJ „Kwadrat1]
RYSUJ [PD] :Kwadrat1
Zamieszczone ilustracje (czytelnik na pewno domyśli się, jak je we własnym zakresie odtworzyć) ukazują zastosowanie programu nie tylko w celu uzyskania efektów animacji, lecz także — zgodnie z propozycją J.R. Truckenbroda — do produkcji ciekawych grafik komputerowych, mogących służyć jako studium rytmu i proporcji w rysunku.
Marcin Waligórski

