Вы
видели когда-нибудь красивые графики? Чтобы хотелось на них смотреть и
смотреть…. Как-то наткнулся на график, о котором говорилось, что его когда-то
астроном - математик подарил своей
невесте траекторию движения планеты
Венеры, которую можно наблюдать в течение 8 лет только с Земли:
Увидев
такую красоту, мне тоже захотелось поэкспериментировать. Решил более подробно
изучить тему построения графиков. И чем больше занимался этим вопросом, тем
больше хотелось сделать своими руками.
Представление
данных на компьютере в графическом виде впервые было реализовано в середине
50-х годов. Сначала, графика применялась в научно-военных целях.
Сейчас эта
область детально изучается в высших технических учебных заведениях.
Занимаясь
проектом, вывел для себя, что построение графических изображений, исследование
графиков функций, одна из интересных тем программирования.
Цель моего
проекта, средствами языка Delphi разработать действующую программу для
построения графиков функций.
Задачи,
поставленные в проекте, это: разработать пользовательский интерфейс программы,
с которой легко работать и получать различные варианты одной и той же функции.
Продумать инструментарий. Разрабатываемая программа должна строить по заданному
параметрическому представлению графиков функций: эпициклоиды, кардиоиды,
астроиды, улитки Паскаля, строфоиды.
Ø математическое представление
исследования графиков,
Ø разработка структурограммы,
Ø составление алгоритма работы,
Ø написание программы,
Ø отладка и получение результатов на
компьютере в среде Delphi.
Чтобы
удобно было работать с нужной функцией, расположим на основной форме кнопки,
вызывающие выбранную функцию:
Для
перехода на выбранную форму, создадим функцию:
procedure
TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;
Для того чтобы нарисовать график y:=
a*sqr(x+b)+c, нужна система координат.
Начало
координат на форме находится в левом верхнем углу, а начало координат для
графика устанавливается в точке с координатами (X0,Y0). Значения X и Y
вычисляются с учетом смещения: x+x0;y-y0.
Система координат строится черным
цветом:
x0:=400;
y0:=300;
x:=-x0;
pen.Color:= clblack;
moveto (x0,30); lineto (x0, 500);
moveto (30,y0); lineto (1000, y0);
Коэффициенты
функции задаются с помощью объекта Edit, а для использования значений
коэффициентов при вычислении координат графика, преобразуем показания объекта Edit в числовые:
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
Координатами
точек при изображении их на форме могут быть только целые числа. Единица
измерения – пиксель. Если значения функции очень маленькие, то изображение
графика нужно увеличивать в несколько раз
Построение графика функции
m:=50;
x:=-x0;
repeat
y:= a*sqr(x)+bх+c;
Pixels [x0+Trunc(x*m),
y0-Trunc(y*m)]:=clgreen;
x:=x+0.001 ;
until (x>=x0);
m –
масштаб - целое число, подбирается в зависимости от вида графика.
x -
изменяется в цикле. Шаг изменения тоже зависит от вида графика.
Графики
функций строятся зеленым цветом.
Следующий
график также из школьного курса – это кубическая функция. Порядок построения
аналогичен предыдущему.
Другие
графики не входят в школьный курс, но исследовать их очень интересно.
Астро́ида(от греч.
αστρον — звезда и ειδος — вид, то есть звездообразная) — плоская кривая,
описываемая точкой окружности радиуса r , катящейся по внутренней стороне
окружности радиуса R=4r.
x:=R*Cos(t)*cos(t)*cos(t);
y:=R*Sin(t)*sin(t)*sin(t)
Улитка Паскаля
Улитка Паскаля ― плоская
алгебраическая кривая 4-го
порядка.
x
:= a*cos( 2* t) + b* cos( t);
y
:= a* cos( t)* sin (t) +b* sin (t);
а –
диаметр исходной окружности
b -расстояние, на которое смещается точка вдоль радиус-вектора
Три улитки
Паскаля: зелёнаяa>b, красная
(кардиоида)a = b и синяя a<b
Эпицикло́ида —
плоская кривая, образуемая фиксированной точкой окружности, катящейся по
внешней стороне другой окружности без скольжения.
x
:= ( a+b)*cos(t) - a* cos((a+b)* t/a);
y
:= (a+b)* sin( t)- a*sin ((a+b)*t/a);
a – радиус
окружности, центр которой находится в начале координат;
b
– радиус
малой окружности
Кардио́ида— плоская
линия, которая описывается фиксированной точкой окружности, катящейся по
неподвижной окружности с таким же радиусом. Получила своё название из-за
схожести своих очертаний со стилизованным изображением сердца
Пусть -
радиус окружностей, начало координат находится в конечной точке горизонтального
диаметра неподвижной окружности. Тогда уравнения кардиоиды можно записать в
следующих формах.
x := 2*a*cos(t)*(1+ cos( t));
y := 2*a* sin( t)*(1+cos(t))
Строфоида — алгебраическая кривая 3-го
порядка.
Считается,
что строфоида впервые была рассмотрена французским математиком ЖилемРобервалем в 1645 году. Роберваль называл эту кривую
— «птероида» (от греч. πτερον— крыло).
x := a*(t*2-1)/(t*2+1);
y := a*
t*(t*2-1)/(t*2+1)
Гипоцикло́ида— плоская
кривая, образуемая точкой окружности,
катящейся по внутренней стороне другой окружности без скольжения.
где , где —
радиус неподвижной окружности, — радиус
катящейся окружности.
К
сожалению, у меня гипоциклоида пока что не получается, но, то что получается,
мне очень нравится, думаю, и вам понравится.
Проект
можно использовать на уроках математики при изучении функций гиперболы и параболы.
А также можно работать над продолжением проекта – добавлять функции, изучаемые
в школе. Конечно, мне очень хочется продолжить работу над проектом и создать
проект построения функций в полярных координатах. И, как говорилось в начале
проекта, может быть я смогу вывести формулу любви и построить её график.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.