понеділок, 24 листопада 2014 р.

Программирование построения графиков

Графики функции с помощью компьютера строятся по точкам. Допустим, чтобы построить график функции y= x^2 на промежутке от 0 до 4 берём значения х с каким-либо небольшим шагом, например, 0.1, и для каждого х вычисляем значения у. Получается такая таблица:
x
y
0
0
0.1
0.01
0.2
0.04
0.3
0.09
0.4
0.16
………..
3.8
14.44
3.9
15.21
4
16

Однако сразу брать эти значения и отображать на экран не стоит. Ведь ось у на экране идёт вниз, а единица длины – это 1 пиксель. И мы получим примерно такую картинку:



Понятно, что это не то, что нужно. Поэтому для адекватного отображения построенного графика на экране, рассмотрим задачу о переходе между системами координат.
Точки графика у нас будут иметь некоторые координаты (х, у). Их нужно отобразить на экранных координатах, назовём их (xs, ys).

Допустим, центр математической системы координат имеет координаты (x0, y0) на экране, а 1 единица соответствует D пикселям экрана.



Тогда, если у точки абсцисса равна х, это значит, что на экране она должна находиться на D*x пикселей от вертикальной оси. А т.к. сама вертикальная ось находится на расстоянии х0 от начала экранных координат, то получаем формулу перевода:
xS = x0+x*D

Аналогично, если ордината точки равна у, это значит, что она отстоит на y*D пикселей от горизонтальной оси. И её экранная координата будет равна
yS = y0-y*D

Знак минус здесь потому, что экранная ось у направлена вниз, а математическая – вверх.


Теперь можно составить алгоритм рисования графика функции y=f(x).

Add caption


По этому алгоритму составим программу для рисования графика функции y=x^2 на промежутке от -5 до 5. Точки брать будем с шагом 0.1. Центр координат поместим в центре экрана (300, 150) и возьмём 20 пикселей в одной единице.

Переводим экран в графический режим:
10 SCREEN 9
20 CLS

Задаём параметры отображения графика на экране
30 X0 = 300
40 Y0 = 150
50 D = 20

Задаём параметры вычисления точек графика:
60 X1 = -5
70 X2 = 5
80 K = 0.1

И выполняем цикл:
90 X = X1
100 IF X>X2 THEN GOTO 170
110 Y = X*X
120 XS = X0+X*D
130 YS = Y0-Y*D
140 PSET (XS, YS)
150 X = X+K
160 GOTO 100


Теперь рисуем горизонтальную ось
170 LINE(0,Y0)-(600,Y0)

И вертикальную:
180 LINE(X0,0)-(X0,350)

Программа готова. Проверьте, будет ли она работать.

Теперь выполните самостоятельные задания:
1. Сделайте график цветным
2. Переместите центр координат ближе к правому нижнему углу экрана
3. Увеличьте масштаб отображения графика
4. Вместо y=x^2 постройте график функции y = sin(x)
5. Отобразите на осях координат засечки, указывающие единицу длины (как на рисунке):

Немає коментарів:

Дописати коментар