Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

Теоретическая работа ж. Построение графиков функций

1Пользуясь графическими командами, мы можем нарисовать очень ограниченный набор линий. Более сложные задачи, например моделирование движения по сложным траекториям, требует построения линий из точек. Один из способов решения этой задачи известен вам из алгебры - построение графиков функций. Давайте попробуем такую программу разработать.

Значение x будет меняться от края до края экрана, а значение y вычисляться по заданной формуле. Для описания такого алгоритма годится конструкция цикла со счетчиком. В роли параметра цикла будет выступать координата x, тогда фрагмент программы построения графика будет выглядеть примерно так:

For x:=0 to 639 do

begin

y:=f(x); { вместо f(x) подставим нужную функцию }

PutPixel(x,y,White)

end;

Если эту программу ввести в компьютер и исполнить, результат, скорее всего, разочарует вас. Дело в том, что в “экранной” системе координат, во-первых, можно изобразить только точки с положительными координатами, а во-вторых, ось Oy направлена не вверх, как мы привыкли, а вниз.

Для того чтобы графики “знакомых” функций выглядели привычно, нужно выбрать более удобную систему координат. Начало координат поместим в центр экрана, а оси направим, как обычно: Ox влево, а Oy - вверх. Изобразим их на экране (для простоты ограничимся лишь прямыми линиями, не изображая стрелок и надписей).

SetColor(Green); { цвет линий }

Line(0,240,639,240); { ось Ox }

Line(320,0,320,479); { ось Oy }

Начнем строить график. Теперь нам придется иметь дело с двумя системами координат - “экранной” и “нарисованной”. Вычислять значение функции нам удобнее в нарисованной системе, а рисовать точки придется в экранной. Обозначим через x и y координаты точки в нарисованной системе, а xэкрана и yэкрана - в экранной.

Связь между ними будет такой.

xэкрана= x - 320

yэкрана=-y + 240

Из этих соотношений видно, что когда x меняется от 0 до 639 (от левого до правого края экрана), xэкрана меняется от -320 до +319, а при изменении y от 0 до 479 (от верхнего края до нижнего), yэкрана меняется от +240 до -239 (т.е. в обратном направлении).

Пользуясь этими соотношениями, составим новую программу построения графика (обозначим xэкрана как x_ekr, а yэкрана - y_ekr):

For x_ekr:=0 to 629 do

begin

x := x_ekr - 320; {переходим от “экранной” системы коор­ди­нат к “нарисо­ван­ной” }

y := f(x); { вместо f(x) подставим нужную функцию) }

y_ekr := 240 - y; { переходим обратно к “экран­ной” системе }

PutPixel(x_ekr,y_ekr,White) {рисуем точку }

end;

Присоединив к этому фрагменту рисование осей координат и снабдив его соответствующим описанием переменных, мы получим желаемый результат. Переменные x и y должны иметь тип Integer; чтобы не нарушать этого условия, y считают обычно как y=round(f(x)).

2Рассмотренный выше способ построения графиков функций основывается на определении положения точки на плоскости с помощью вычисления расстояния от двух перпендикулярных осей в прямоугольной (декартовой) системе координат. Существуют и другие способы задания функции. Один из них опирается на идею полярных координат.

На плоскости берется числовая ось. Начало координат этой оси (точка О) называется полюсом, а сама ось - полярной осью. Для определения положения точки М достаточно указать два числа: r - полярный радиус (расстояние от этой точки до полюса) и - полярный угол (угол поворота от полярной оси до луча ОМ. Иными словами, в полярной системе координат положение точки на плоскости задается двумя числами, указывающими направление, в котором находится точка, и расстояние до этой точки.

С помощью полярных координат можно также задавать на плоскости различные кривые. Очень простым будет, например, уравнение окружности с центром в полюсе. Если радиус окружности равен P, то и полярный радиус любой точки окружности равен P, значит уравнение этой окружности имеет вид r = P.

Полярная система координат в некоторых случаях удобнее прямоугольной. Например, простенькое уравнение r = в полярных координатах задает спираль, описать которую в прямоугольной системе очень сложно.

3Идея полярных координат, безусловно, красива и полезна, но наш экран работает в прямоугольной системе. Значит, для того чтобы строить графики функций в полярных координатах, нужны формулы перехода от одной системы к другой.

Давайте поместим полюс в центр экрана, а полярную ось направим горизонтально слева направо. Пусть x_ekr и y_ekr по-прежнему обозначают экранные координаты точки, а r и a - ее полярные координаты. Тогда формулы перехода будут такими:

x_ekr = 320 + r * Sin(a)

y_ekr = 240 - r * Cos(a)

При этом надо иметь в виду, что стандартные функции Sin и Cos предполагают задание аргумента в радианах. Напомним, что радиан - это единица измерения углов, равная 180°, деленному на число градусов (развернутый угол составляет радиан). Если вам удобнее работать с градусной мерой, пользуйтесь формулой перехода aрадиан =3.1416*aградусов/180.

А теперь составим программу рисования спирали, которая задается в полярных координатах уравнением r = a. В качестве параметра цикла выберем полярный угол, который будем менять от 0 до полного угла, разделив его на 1000 частей. Тогда размер шага будет равен 2*3.1416/1000=0.0062832.

a := 0;

For i:=0 to 1000 do

begin

r := f(a); { вместо f(a) подставим нужную функцию) }

x_ekr := 320 + r*Sin(a); { переходим от полярных }

y_ekr := 240 - r*Cos(a); { координат к “экранным” }

PutPixel(x_ekr,y_ekr,White); { рисуем точку }

a := a + 0.006832; { увеличиваем полярный угол }

end;

Добавив соответствующее описание переменных, мы получим программу, рисующую на экране кусок спирали. Если спираль покажется Вам некрасивой из-за того, что соседние точки слишком далеко отстоят друг от друга, - уменьшите шаг и соответственно увеличьте число шагов.

Обратите внимание, что в этой программе переменная i играет роль только счетчика цикла, а в теле цикла не используется.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]