Zacznijmy od najprostszej figury geometrycznej posiadaiącei pole — koła. Może tak:
10 LET x = 128: LET y = 88: LET r = 30: REM parametry
20 FOR f= 1 TO r
30 CIRCLE x, y. f
40 NEXT f
Nie jest to porządnie — pozostają kropki i smugi. Przypomnijmy sobie wiadomości o funkcjach trygonometrycznych i napiszmy (linia 10 bez zmian):
20 FOR f = 0 TO 2*PI STEP PI/180
30 PLOT x, y
40 DRAW r * COS f, r * SIN f
50 NEXT f
Też niedobrze. A może skorzystać z równania
koła x2 + y2 = r2?
20 FOR f=-r TO r
30 PLOT x+f, y + SQR ABS(r*r-f*f)
40 DRAW 0.-2*SQR ABS (r*r-f*f)
50 NEXT F
Nareszcie!
Przyczyną tak długich niepowodzeń była mała rozdzielczość Spectrum. Aby uzyskać dobry obraz musieliśmy uciec się do rysowania tylko pionowych (poziomych) linii.
Teraz narysowanie zapełnionej elipsy będzie fraszką.
Znamy równanie:
x2/a2 + y2/b2 = 1
więc:
20 FOR f =-a TO a
30 LET dy = b*SQR ABS (1-f*f/(a*a))
40 PLOT x + f, y + dy
50 DRAW 0, -2*dy
60 NEXT f
a i b to długości półosi elipsy.
W podobny sposób zamalować można pozostałe krzywe stożkowe — Hiperbolę
x2/a2 - y2/b2 = 1
parabolę y2 = 2px
Teraz kwadrat. Zadanie raczej dla przedszkolaka’
20 FOR f = -rTO r 30 PLOT x+ f, y-r 40 DRAW 0,2*r 50 NEXT f
W przypadku prostokąta wystarczy poróżnić r w liniach 20 i 30 (poziom) z r w linii 40 (pion) W przypadku rombu:
10 LET x = 128: LET y = 88: LET r = 30: LET a = PI/3
20 FOR f= -r TO r
30 PLOT x + f, y - r
40 DRAW r*COS a, r*SIN a
50 NEXT F
Wprowadzamy tu kąt nachylenia boku (a).
A jak zrobić równoległobok? — Tak jak z kwadratu prostokąt.
Tu kończą się możliwości Spectrum w dokładnym zapełnianiu figur. Nie da się szybko i dokładnie zapełnić ani w/w figur obróconycń o kąt ostry, ani innych. Rozwiązanie problemu — za miesiąc.
Marcin Przasnyski