Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
15.02.2016
Размер:
4.77 Mб
Скачать

К лабораторной работе № 6

Цель работы: приобретение практических навыков в разработке и отладке программ для работы со статической графикой.

В этой работе строятся графики функций.

Структура создаваемой программы: установка экранного режима; определение функции как пользовательской; рисование кривой.

Установка экранного режима осуществляется операторами SCREEN и COLOR. В данной работе используется SCREEN 9, характеристики, которого приведены в таблице 0.6.2. Оператор COLOR 1, 2 задает экранные цвета: 1-я цифра в данном примере 1 (синий), - основной (цвет текста), 2-я цифра – 2 (зеленый) – определяет цвет фона (экрана). Номера экранных цветов даны в таблице 0.6.3.

Определяется функция с помощью оператораDEF FN, например, для синуса будет DEF FNy (x) = a  SIN (x0 + x). Не забывайте, что параметры x0 и a необходимо ввести с помощью INPUT. Кривая может быть задана параметрическими уравнениями, например, x = at – b sin t и y = a – b cos t . Тогда определяется DEF FNy (t) и DEF FNx (t). В некоторых вариантах,

например, вариант 15, гиперболическая спираль задается уравнением в полярных координатах r = c/t .Тогда, как видно из рисунка:

y = r sin t

x = r cos t

Подставив c/t вместо r, получим искомые параметрические уравнения.

Перед построением кривой следует нарисовать оси координат – две взаимно перпендикулярные линии, пересекающиеся в центре экрана (в точке с координатами x =320, y = 175).

Для построения кривой организуется цикл, тело которого составляют выражения для координат, например, для синуса такое выражение будет:

y = 175 – 30  FNy ((x – 320) / 30),

где 30 – коэффициент формы, которым можно варьировать.

Кроме того, в тело цикла входит оператор, непосредственно рисующий кривую – RSET (x, y), k. Однако при использовании этого оператора не всегда можно получить сплошную линию кривой. Поэтому предпочтительнее использовать оператор LINE (x, y1)-(x+1, y2), k с выражениями:

y1 = 175 – 30  FNy ((x – 320) / 30)

y2 = 175 – 30  FNy ((x + 1 – 320) / 30)

В некоторых случаях целесообразно использовать переменную t/100.

Тогда выражения будут иметь вид:

y1 = 175 – 30  FNy (t)

y2 = 175 – 30  FNy (t + 1)

Таблица 0.6.1.

Оператор и его описание

COLOR 2,3

Оператор устанавливает экранные цвета, где 1-я цифра – основной - цвет текста (в пределах 0-31), 2-я цифра – фоновый цвет экрана (в пределах 0-7)

COLOR , 2

Оператор устанавливает фоновый цвет 2 (зеленый), основной без изменения.

PSET (x, y), 1

Оператор рисует точку с координатами x, y цвета 1 (синий).

PSET STEP(10, 10), 3

Оператор рисует точку с координатами x +10, y +10 относительно последней точки с координатами x, y цветом 3 (голубой).

PRESET (x, y), 2

Оператор рисует точку с координатами x, y цвета 2.

PRESET STEP(10, 10), 1

Оператор рисует точку с координатами x +10, y +10 относительно последней точки с координатами x, y цветом 1 (синий).

DEF FNy (x) = a SIN (x0 + x)

Функция, возвращающая одно значение и используемая аналогично встроенной функции Бейсика. Имя функции всегда должно начинаться с букв FN.

LOCATE 25, 80

Оператор, передвигающий курсор в указанную позицию экрана. 1-я цифра (25) – номер строки на экране (позиция по y), 2-я (80) – номер столбца на экране (позиция по x). Указаны максимальные значения для SCREEN 9.

LINE (12, 18)–(12, 280), 1

Оператор рисует вертикальную линию от y = 18 до y = 280 при x = 12.

LINE (10, 15)–(200, 250), 1

Оператор рисует цветом 1 (синий) отрезок прямой линии из точки с координатами x = 10, y = 15 до точки с координатами x = 200, y = 250

Продолжение табл. 0.6.1.

LINE (120, 180)–(290, 180), 1

Оператор рисует горизонтальную линию от x = 120 до x = 290 при y = 180

LINE (10, 15)–(200, 270), 2, B

Оператор рисует цветом 2 (зеленый) прямоугольник со сторонами, параллельными экрану, диагональю которого является отрезок прямой из точки с координатами x = 10, y = 15 до точки с координатами x = 200, y = 270

x1 = 10: y1 = 15: x2 = 200: y2 = 270

LINE (x1, y1)–(x2, y2), 2, BF

Оператор рисует прямоугольник, как в предыдущем случае, заливая его тем же цветом 2.

LINE –(40, 40), 1

Оператор рисует линию от последней точки, заданной предыдущим оператором программы (пусть x = 10, y = 10), до точки с x = 40, y = 40.

LINESTEP(40, 40), 1

Оператор рисует линию от последней точки, заданной предыдущим оператором программы (пусть x = 10, y = 10), до точки с x = 50, y = 50.

LINE (20,20)–STEP(40, 40), 1

Оператор рисует линию от точки c x = 20, y = 20 до точки с x = 60, y = 60.

LINE STEP(20,20)–STEP(40, 40), 1

Оператор рисует линию (пусть последняя точка x = 20, y = 20) от точки c

x = 40, y = 40 до точки с x = 80, y = 80.

LINE STEP(20,20)–(60, 60), 1

Оператор рисует линию (пусть последняя точка x = 10, y = 10) от точки c

x = 30, y = 30 до точки с x = 60, y = 60.

LINE (120, 180)–(290, 180), 1, ,&H2A0F

Оператор рисует линию, стиль которой задается 16-ричным числом 2A0F

Окончание таблицы 0.6.1.

LINE (120, 180)–(290, 280), 1, B,&H6С5F

Оператор рисует прямоугольник, стиль линии которого задается 16-ричным числом 6С5F

Примечание:

1. Стиль не влияет на закрашенные прямоугольники.

2. Если в операторе LINE не указан номер цвета, то он рисует основным, а если указан 0 – то фоновым цветом.

3. Координаты и цвет в операторе LINE могут задаваться числами (например, 120), переменными (x1), элементами массива (y(i,j)), выражением (например, (i + 2) / 3).

4. Операторы PSET и PRESET работают одинаково, но если цвет не указан, PSET использует основной цвет, а PRESET – фоновый.

5. Если координаты точки находятся вне экрана, то никаких действий не производится и сообщение об ошибке не выдается

При построении гиперболы и некоторых других кривых будет возникать ошибка "Деление на ноль", избежать которой можно перескочив через критическую точку (x = 320), используя

IF x = 319 THEN x = x + 2

Если функция, задающая кривую, содержит выражение под знаком квадратного корня, то приходится брать его по абсолютной величине (применяя функцию ABS(x)). Это может привести к потере части кривой, что необходимо восполнить, задав дополнительные "координатные" выражения для потерянной симметричной половины кривой (варьируя знаками – и + в этих выражениях).

Таблица 0.6.2.

Режим

Разрешение. Страницы видеопамяти

Количество

цветов

SCREEN 0

Текстовый режим.

16

SCREEN 1

320х200, 1 страница

4

SCREEN 2

640х200, 1 страница

2

SCREEN 7

320х200, 8 страниц

16

SCREEN 8

640х200, 4 страницы

16

SCREEN 9

640х350, 2 страницы

16

SCREEN 10

640х350, 2 страницы

2

SCREEN 11

640х480, 1 страница

2

SCREEN 12

640х480, 1 страница

16

SCREEN 13

320х200, 1 страница

256

Таблица 0.6.3.

Номер

Цвет

Номер

Цвет

0

Черный

8

Темно-серый

1

Синий

9

Светло-синий

2

Зеленый

10

Светло-зеленый

3

Голубой

11

Светло-голубой

4

Красный

12

Светло-красный

5

Фиолетовый

13

Васильковый

6

Коричневый

14

Желтый

7

Светло-серый

15

Ярко-белый

Для удобства рисования бывает полезно вывести на экран координатную сетку, которую затем можно убрать из создаваемой программы. Ниже приводится вариант программного блока построения такой сетки.

CLS: SCREEN 9: COLOR 1, 2

'GOTO 50 'Убирает сетку не стирая

'==1======== Блок построения сетки ============

FOR xc = 0 TO 650 STEP 10

IF xc MOD 100 = 0 THEN kc = 8 ELSE kc = 15

LINE (xc, 0)-(xc, 370), kc 'Вертикальные линии

LINE (0, xc)-(650, xc), kc 'Горизонтальные линии

NEXT xc

50 SLEEP 'Для продолжения нажать любую клавишу

'=========================================