Projekt zawiera klasy krzywych:
Projekt ilustruje schemat podziału programu na pliki. Otwórz i uruchom program zawarty w pliku krzywe_sl.l.
Program jest bardzo prosty: tworzy obiekt o wybranym typie krzywej i na podstawie parametrów tej krzywej tworzy
suwaki. Przy pomocy instrukcji include
program dołącza definicje krzywych znajdujące się w osobnych plikach.
Dzięki podziałowi na klasy i pliki definicje krzywych również są czytelnymi, krótkimi fragmentami kodu. Na wzór jednej z krzywych możesz stworzyć własną. Konieczne jest zachowanie konwencji:
krzywa
: use krzywa :c
:param,"nazwa := {p0 pmin pmax krok}
"nazwa
- słowo-nazwa parametrup0
- początkowa wartość parametru, wartość z zakresu < pmin
; pmax
>pmin
- dolna granica wartości parametrupmax
- górna granica wartości parametrukrok
- skok wartości podczas zmiany parametru (można go pominąć, wtedy zmiana parametru będzie ciągła)
fn
, która jest odpowiedzialna za narysowanie krzywej.
Każdy plik z definicją krzywej powinien dołączać plik z definicją klasy bazowej, ale tak by jednocześnie uniknąć wielokrotnego dołączania pliku:
if not defined? "krzywa [include "krzywa.l]
Klasa bazowa zawiera prototyp funkcji fn
oraz całą maszynerię konieczną do odmalowania krzywej
po zmianie rozmiaru czy skali okna graficznego, obsługę zmiany parametrów, itp.
Spróbuj dodać do projektu plik z klasą dla krzywej asteroida:
to asteroid :c
use krzywa :c
to fn
pu setxy :s 0 pd
for [t 0 360] [
if :stop [stop]
let "x :s * (cos :t)^:k
let "y :s * (sin :t)^:k
setxy :x :y
]
end
:param,"K := {3 1 13 2}
:param,"S := {150 10 300 1}
end