Глава 17
Графика
Краткое содержание: PLOT, DRAW, CIRCLE, POINT
Эта глава описывает возможности компьютера Zx-SPECTRUM по
отображению графической информации. Экран компьютера содержит 22
строки по 32 символа в каждой, что составляет 22 х 32 ■ 704 сим-
вольные позиции. Как вы уже поняли из 16 главы, каждая символьная
позиция представляется квадратом 8x8 точек, называемых пикселя-
ми. Пиксель задается его координатами. Первое число задает коор-
динату х. то есть удаление (в пикселях) до левой границы экрана.
Координаты записываются в скобках, так (0.0), (255,0), верхний
правый и верхний левый углы экрана. Оператор PLOT X, Y вызывает
высвечивание закрашивающим цветом (INK) пикселя с указанными ко-
ординатами. Например, программа:
10 PLOT INT (RND*256), INT (RND*176)
20 INPUT да
30 GOTO 10
Будет высвечивать некоторый случайный пиксель, при каждом на-
жатии ENTER. Есть и более интересные программы. Например, следую-
щая программа вычерчивает график функции синус (х) для х в интер-
вале от нуля до 2*Р1:
10 FOR N«0 то 255
20 PLOT N,88+80*SIN (N/128»PI)
30 NEXT N
или программа:
10 FOR N=0 то 255
20 PLOT N,80*SQR (N/64)
30 NEXT N
Которая чертит график SQR (x) (часть параболы) в интервале от
нуля до 4. Помните, что координаты пикселей отличаются от адреса-
ции срок и позиций в подкоманде "AT". Пользуйтесь диграммой из
главы 15. Помощь при построении изображений вам могут оказать
операторы: DROW, CIRCLE. Оператор DRAW чертит линию, заданную в
форме: DRAW X, Y. Началом линии является пиксель, на котором за-
вершился один из предыдущих операторов PLOT, DRAW или CIRCLE
(этот пиксель называется текущей PLOT-позицией. Операторы RUN,
CLEAR, CL и NEW устанавливают ее в левый нижний угол экрана, т.о.
оператор DRAW задает длину и направление вычерчивания линии, но
не начальную точку. Поэксперемеитируйте с такими командами:
PLOT 0,100: DRAW 80, -35
PLOT 90,150: DRAW 80, -35
Чертить можно также в цвете, но при этом надо иметь в виду,
что цвет устанавливается для целой символьной позиции и не может
быть задан для отдельного пикселя. Следующая программа демонстри-
рует это:
10 BORDERO: PAPER 0: INK 7: CLS: REM BLACK OUT SCREEN
20 LET X1=0: LET Y1»Q: REM START OF LINE
30 LET С*1: REM FOR INK COLOUR, STARTING BLUE
40 LET X2 =I NT (RND*256): LET Y2-INT (RND*176): REM
RANDOM FINISH OF LINE
50 DRAW INK С; X2-X1, Y2-Y1
60 LET X1 *X2: LET Y1*Y2: REM NEXT LINE STARTS WHERE
LAST ONE FINISHED
70 LET C-C+l: IF C=8 THEN LET C-l: REM NEW COLOUR
80 GO TO 40
Вы можете использовать в операторах PLOT и DRAW управляющие
символы: PAPER, INK, FLUSH, BRIGHT, INVERSE и OVER так же, как и
в операторах PRINT и INPUT. Управляющие символы записываются меж-
ду ключевым словом и координатами и оканчиваются запятой или точ-
кой с запятой (см. Строку 50). При помощи DRAW можно также вычер-
тить отрезок дуги, используя для этого дополнительное число, за-
дающее угол (в радианах) этой дуги:
DRAW X, Y, А
Если "А"-положительно, то дуга вычерчивается влево, а если от-
рнцательно-то вправо. При "А" равном 2*Р1 вычерчивается полная
окружность.
например: 10 PLOT 100,100: DRAW 50,50, PI
вычертит полуокружность с начальной точкой (100,100) и крнечной
точкой (150,150). Вычерчивание начинается в направлении
юго-восток и заканчивается в направлении на северо-запад. Опера-
тор CIRCLE вычерчивает полный круг, задаваемый координатами его
центра и радиусом:
CIRCLE X, Y, РАДИУС
Как и в операторах PLOT и DRAW вы можете указать в этом опера-
торе различные цвета. Функция POINT возвращает характеристики
цвета заданного пикселя. Например, строка программы:
CLS: PRINT POINT (0,0): PLOT (0,0): PRINT POINT (0,0) выведет:
PAPER 7: INK 0
Допускается также задавать управляющие символы: INVERSE и OVER
9 операторе PLOT. по умолчанию они предполагаются равными нулю
(отключено), но вы можете задать и единицу, при этом: PLOT
INVERSE 1 - устанавливает для заданного пикселя цвет фона. PLOT
OVER 1 - изменяет цвет пикселя на противоположный, если был зак-
рашивающий цвет, то становится цвет фона и наоборот. PLOT INVERSE
1; OVER 1; - сохраняет цвет пикселя без изменений, но меняет те-
кущую PLOT-позицию. Другой пример использования OVER с записью
чериым по белому:
PLOT 0,0: DRAW OVER 1; 255,175
вычерчивает линию по диагонали. Теперь попробуйте:
PLOT 0,0: DRAW INVERSE 1; 255,175
и перечертите ее командой:
DRAW OVER 1; -250, -175
Это не изменит картинку, т.к. при черчении как вперед, так и
назад используются одни и те же пиксели. Имеется способ получения
необычных цветов в одном квадрате, с использованием определяемых
оператором символов. Выполните эту программу:
1000 FOR N»0 ТО б STEP 2
1010 POKE USR "a" +N, BIN 01010101:
POKE USR "a" +N+1, BIN 10101010
1020 NEXT N
Она задает определяемый пользователем символ для шахматной
доски, который закрепляется за клавишей "Ан. Для символа исполь-
зуется красный закрашивающий цвет и желтый цвет фона, но на экра-
не этот символ будет казаться оранжевым. Еще один пример, прог-
рамма, которая строит график некоторой функции. На первый ее зап-
рос вы отвечаете числом "NM, задающим область значений аргумента
(т. е. график будет строится для значений аргумента в диапазоне
от -N до +N). Второй ответ-это выражение в виде символьной стро-
ки , задающей функцию, использующую "Xм в качестве аргумента:
10 PLOT 0,87: DRAW 255,0
20 PLOT 127,0: DRAW 0,175
30 INPUT S, E*
40 FOR F®4) TO 255
50 LET Xs (F-128) ♦S/128: LET Y=VAL EB
60 IF ABS Y>87 THEN LET T-0: GOTO 100
70 IF NOT T THEN PLOT F, Y+88: LET T«l: GOTO 100
80 DRAW 1, Y-OLDY
100 LET OLDY »I NT (Y + 5)
110 NEXT F
Выполните ее, введя 10 для числа MN" и "10*TAN Xм для функции.
Будет вычерчен график функции: TG X, при X, изменяющемся от -10
до +10.