Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor: Steven Vickers
Tłumaczył: mgr Jerzy Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

ROZDZIAŁ 18 – Grafika

Rozkazy: PLOT, UNPLOT

SPIS TREŚCI
ROZDZIAŁ 1 Przygotowanie ZX81
ROZDZIAŁ 2 Wydawanie komputerowi poleceń
ROZDZIAŁ 3 Lekcja historii
ROZDZIAŁ 4 Sinclair ZX81 jako kalkulator kieszonkowy
ROZDZIAŁ 5 Funkcje
ROZDZIAŁ 6 Zmienne
ROZDZIAŁ 7 Łańcuchy tekstowe
ROZDZIAŁ 8 Programowanie komputera
ROZDZIAŁ 9 Dalsze programowanie komputera
ROZDZIAŁ 10 Jeśli ...
ROZDZIAŁ 11 Zestaw znaków
ROZDZIAŁ 12 Pętle
ROZDZIAŁ 13 Wolno i Szybko
ROZDZIAŁ 14 Podprogramy
ROZDZIAŁ 15 Uruchamianie programów
ROZDZIAŁ 16 Pamięć taśmowa
ROZDZIAŁ 17 Wyświetlanie z bajerami
ROZDZIAŁ 18 Grafika
ROZDZIAŁ 19 Czas i ruch
ROZDZIAŁ 20 Drukarka dla ZX81
ROZDZIAŁ 21 Podłańcuchy
ROZDZIAŁ 22 Tablice
ROZDZIAŁ 23 Gdy zaczyna brakować pamięci
ROZDZIAŁ 24 Liczenie na palcach
ROZDZIAŁ 25 Jak pracuje komputer
ROZDZIAŁ 26 Stosowanie kodu maszynowego
ROZDZIAŁ 27 Organizacja pamięci
ROZDZIAŁ 28 Zmienne systemowe
DODATKI
A Zestaw znaków
B Numery komunikatów
C ZX81 dla znających język BASIC

ROZDZIAŁ 18 – Grafika

Oto niektóre z najbardziej eleganckich cech ZX81; używają one tzw. pikseli (elementów obrazu). Na ekranie można wyświetlić 22 wiersze po 32 kolumny, co daje 22*32=704 pozycje znakowe, a każda z nich zawiera 4 piksele, podzielone jak szachowniczka w ciastku Batterburg.

Piksel jest określany przez dwie liczby, jego współrzędne. Pierwsza, współrzędna x, określa jak daleko znajduje się on w poziomie od skrajnej, lewej kolumny, a druga, współrzędna y, mówi jak daleko jest on od spodu. Współrzędne te są zwykle zapisywane jako para w nawiasach, zatem (0,0), (63,0), (0,43) i (63,43) określają narożniki lewy dolny, prawy dolny, lewy górny i prawy górny.

Polecenie

PLOT współrzędna x, współrzędna y

zaczernia piksel na tych współrzędnych, natomiast polecenie

UNPLOT  współrzędna x, współrzędna y

wybiela go.

Wypróbuj ten krościaty program:

10 PLOT INT (RND*64),INT (RND*44)
20 INPUT A$
30 GOTO 10

Rysuje on przypadkowy piksel przy każdym naciśnięciu NEWLINE.

Oto nieco bardziej użyteczny program. Rysuje on wykres funkcji SIN (falę sinusoidalną) dla wartości pomiędzy 0 a 2π.

10 FOR N=0 TO 63
20 PLOT N, 22+20*SIN (N/32*PI)
30 NEXT N

 Następny program rysuje wykres SQR (część paraboli) pomiędzy 0 i 4:

10 FOR N=0 TO 63
20 PLOT N,20*SQR (N/16)
30 NEXT N

 Zwróć uwagę, iż współrzędne pikseli są raczej inne od numerów wierszy i kolumn w elemencie AT. Na końcu tego rozdziału jest plansza, która może być pomocna przy wyliczaniu współrzędnych pikseli oraz wierszy i kolumn.

Podsumowanie

Piksele i ich współrzędne

Polecenia: PLOT i UNPLOT

Ćwiczenia

  1. Są trzy różnice pomiędzy liczbami w elemencie AT a współrzędnymi pikseli; jakie?

    Załóżmy, iż pozycja wydruku PRINT odpowiada AT W,K (wiersz i kolumna). Udowodnij sobie, iż cztery piksele na tej pozycji posiadają współrzędne x 2*K lub 2*K+1, a współrzędne y równe 2*(21-W) lub 2*(21-W)+1 (zobacz na planszę).
  1. Zrób dziurkacz do sera przez zmianę programu krościatego tak, aby najpierw wypełnił ekran na czarno (czarny kwadrat jest spacją w negatywie - otrzymujesz ją w trybie graficznym  G ), a następnie rysuje białe przypadkowe punkty; jeśli masz tylko 1K pamięci - czyli tzw. standardową maszynę bez rozszerzenia pamięci - to zabraknie ci jej przy wykonywaniu tego programu, zatem będziesz musiał go nieco przerobić, aby wykorzystywał tylko część ekranu.
  1. Zmodyfikuj program tworzący wykres SIN tak, aby przed rysowaniem wykresu narysował poziomą linię dla osi x i pionową dla osi y.
  1. Napisz programy rysujące wykresy innych funkcji, np. COS, EXP, LN, ATN, INT itd. Dla każdego z nich musisz upewnić się, iż wykres zmieści się na ekranie, zatem będziesz musiał wziąć pod uwagę:

    (i) dla jakiego zakresu argumentów chcesz rysować wykres funkcji (dla wykresu SIN odpowiada to zakresowi od 0 do 2π).
    (ii) w którym miejscu ekranu należy umieścić oś x (odpowiada to 22 w wierszu dla programu wykresu SIN).
    (iii) jak skalować oś y wykresu (odpowiada to 20 w wierszu 20 dla programu wykresu SIN).

    Odkryjesz, że najprostszy jest COS - taki jak SIN.
  1. Uruchom to

    10 PLOT 15,21
    20 PRINT "GRUBY CUDZYSLOW"
    30 PLOT 46,21

    Polecenie PLOT przesuwa pozycję wydruku PRINT (UNPLOT również).
  1. Ten podprogram rysuje prostą linie (względnie) od piksela (A,B) do piksela (C,D).

    Użyj go jako część jakiegoś programu głównego, który dostarczy wartości dla A, B, C i D.

    (jeśli nie posiadasz rozszerzenia pamięci, to będziesz musiał pominąć polecenia REM).

    1000 LET U=C-A
    1005 REM U POKAZUJE, ILE KROKOW WZDLUZ NALEZY POJSC
    1010 LET V=D-B
    1015 REM V POKAZUJE ILE KROKOW W GORE
    1020 LET D1X=SGN U
    1030 LET D1Y=SGN V
    1035 REM (D1X,D1Y) JEST POJEDYNCZYM KROKIEM W KIERUNKU PRZEKATNYM
    1040 LET D2X=SGN U
    1050 LET D2Y=0
    1055 REM (D2X,D2Y) JEST POJEDYNCZYM KROKIEM W LEWO LUB W PRAWO
    1060 LET M=ABS U
    1070 LET N=ABS V
    1080 IF M>N THEN GOTO 1130
    1090 LET D2X=0
    1100 LET D2Y=SGN V
    1105 REM TERAZ (D2X,D2Y) JEST POJEDYNCZYM KROKIEM W GORE LUB W DOL
    1110 LET M=ABS V
    1120 LET N=ABS U
    1130 REM M JEST WIEKSZA Z ABS U I ABS V, N JEST MNIEJSZA
    1140 LET S=INT (M/2)
    1145 REM CHCEMY PRZEJSC Z (A,B) DO (C,D) W M KROKACH,
    1146 REM UZYWAJAC N KROKOW D2 W GORE-DOL LUB PRAWO-LEWO,
    1147 REM A M-N KROKOW PRZEKATNYCH, ROWNO ROZPROSZONYCH
    1150 FOR I=0 TO M
    1160 PLOT A,B
    1170 LET S=S+N
    1180 IF S<M THEN GOTO 1230
    1190 LET S=S-M
    1200 LET A=A+D1X
    1210 LET B=B+D1Y
    1215 REM KROK PRZEKATNY
    1220 GOTO 1250
    1230 LET A=A+D2X
    1240 LET B=B+D2Y
    1245 REM KROK W GORE-DOL LUB W PRAWO-LEWO
    1250 NEXT I
    1260 RETURN

    Ostatnia część (wiersze od 1150) miesza  równomiernie M-N kroków D1 z N krokami D2. Wyobraź sobie planszę do gry w Eurobiznes posiadającą M pól rozmieszczonych wokół krawędzi, ponumerowanych od 0 do M-1. Twoje bieżące pole posiada numer S i rozpoczyna się od narożnika leżącego naprzeciw pola GO. Każdy ruch przesuwa cię o N pól wokół planszy, a w linii prostej na ekranie wykonujesz albo ruch prawo-lewo/góra-dół (jeśli mijasz pole GO na planszy), albo krok po przekątnej w przeciwnym razie. Ponieważ twoja całkowita podróż na planszy składa się z M*N kroków albo N okrążeń, przechodzisz przez GO N razy i w M krokach są równomiernie rozmieszczone N kroków prawo-lewo/góra-dół.

    obrazek

    Zmień program tak, aby w przypadku jeszcze jednego parametru, np. E = 1, rysowana była linia czarna (jak w przykładzie), a dla E = 0 linia biała (przy użyciu polecenia UNPLOT). W ten sposób możesz wymazać świeżo namalowaną linię.

obrazek

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.