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




Для составления компьютерной программы, решения задачи построения 2D графика функции можно рекомендовать следующий порядок действий:

- проектируем главную форму программы, помещая на нее компоненты для управления действиями (меню, кнопки или др.) и компоненты для ввода граничных значений по оси Ox;

- программируем вывод осей координат и вспомогательных надписей;

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

- включаем в программу функции xp и yp, выполняющие преобразование координат и процедуру вычисления ymin и ymax;

- программируем процедуру вывода графиков, используя приведенные выше фрагменты исходного кода.

Приведенный порядок построения графика проиллюстрируем на следующем примере: выведем график функции y= +10.

В левой части рис.2 показан проект формы для вывода графика (использованы компоненты PaintBox1, MainMenu1, Edit1, Edit2, Label1, Label2), в правой части рисунка – результат выполнения пункта меню «Оси координат».

Рисунок 2 – Последовательность построения графика

 

Для построения осей координат использована следующая процедура:

 

//вывод координатной сетки

procedure TForm1.N1Click(Sender: TObject);

var i,n,x,y:integer;

begin

With Form1.PaintBox1.Canvas do

begin

n:=round(Width/20);

Pen.Style:=psDashDot;

X:=0; Y:=0;

For i:=1 to n do

begin

MoveTo(x,y);

LineTo(Width,y);

y:=y+20;

end;

Y:=0;

For i:=1 to n do

begin

MoveTo(x,y);

LineTo(x,PaintBox1.Height);

x:=x+20;

end;

//вывод осей координат

Pen.Style:=psSolid;

Pen.Mode:=pmBlack;

Pen.Width:=2;

MoveTo(PaintBox1.Width div 2,0);

LineTo(PaintBox1.Width div 2,Height);

MoveTo(0,PaintBox1.Height div 2);

LineTo(PaintBox1.Width,PaintBox1.Height div 2);

//стрелки

MoveTo(PaintBox1.Width div 2,0);

LineTo(PaintBox1.Width div 2-5,15);

MoveTo(PaintBox1.Width div 2,0);

LineTo(PaintBox1.Width div 2+5,15);

MoveTo(PaintBox1.Width,PaintBox1.Height div 2);

LineTo(PaintBox1.Width-15,PaintBox1.Height div 2-5);

MoveTo(PaintBox1.Width,PaintBox1.Height div 2);

LineTo(PaintBox1.Width-15,PaintBox1.Height div 2+5);

//надписи

TextOut(380,175,'x');

TextOut(180,0,'y');

TextOut(185,200,'0');

end;

end;

 

Результат построения графика показан на рис.3.

 

Рисунок 3 – Результат построения графика

Индивидуальные задания

Лабораторная работа включает 4 задания.

4.1.1 Построить графики четырех функций (табл. 1). Все графики построить различными цветами (точки/линии графика выводятся в цикле). Предусмотреть масштабирование графика. Интервал изменения аргумента, цвет графика должны задаваться пользователем.

4.1.2 Построить графики тех же функций с использованием компонент Chart с несколькими сериями Series и ColorBox для выбора цвета линий).

Таблица 1 – Варианты заданий для построения графиков функций

Вариант f1(x) f2(x) f3(x) f4(x)
1. cos(x) 2cos(x) cos(2x) cos(x/2)
2. sin(x) 2sin(x) sin(2x) sin(x/2)
3. ex e-x e2x ex/2
4. x2 -x2 аx2 x2+2
5. ln(x) ln(2x) ln(x/2) ln(x)/2
6. x3 2x3 x3/2 (x/2)3
7. ln(x) 2ln(x) ln(x2) (ln(x))2
8. ex ex/2 ex-1 e2x
9. cos(x) Cos(x/2) (cos(x))2 cos(2x)
10. sin(x) sin(x/2) (sin(x))3 (sin(x))2
11. x3 x3+2 2x3 2x3+2
12. x2 3x2 x2/3 x2+3
13. x3 2x3 x3/2 x3+2
14. xsin(x) x/2sinx xsin(x)2 xsin(2x)
15. x-sin(x/2) x-2sinx x-sin(2x) x-sin(x)
16. x-cosx x-cos(2x) x-cos(x/2) x-cos(3x)

 

Рисунок 4 – Пример результата 4.1.2

4.2. Построить график функции, заданной в параметрическом виде. Цвет, значение параметра (-ов), диапазон, и шаг изменения угла задаются пользователем.

1. Улитка Паскаля: , , , , . Рассмотреть случаи, когда , , .

2. Кардиоида: , , , .

3. Эпициклоида: , , a, b>0, . Рассмотреть случай, когда есть целое положительное число, ;

4. Астроида: , , .

5. Строфоида: , , , .

6. Конхоида Никомеда: , ; правая ветвь – , левая – ; , . Рассмотреть случаи, когда , , .

7. Строфоида: , , , .

8. Циссоида: , , , .

9. Построить спираль вокруг начала координат с N витками и внешним радиусом R; начальное направление спирали образует с осью OX угол . Параметрическое представление спирали: , , , .

10. Кардиоида: , , , .

Рисунок 4 – Пример результата 4.2 (Астроида)

4.3. Анимация графических объектов. На канве главной формы обеспечить движение объекта.

1. Изобразить на экране точку, движущуюся по окружности с постоянной угловой скоростью.

2. Составить программу для управления скоростью движения точки по окружности. Управление производится пользователем путем нажатия соответствующих кнопок.

3. Изобразить на экране две движущиеся точки, траектории которых являются концентрическими окружностями. Угловая скорость точки, движущейся по внутренней окружности, несколько меньше, чем угловая скорость точки, движущейся по внешней окружности (обе скорости – постоянные величины). При этом:

- обе точки вращаются в одном направлении (например, по часовой стрелке);

- точки вращаются в противоположных направлениях.

4. Изобразить на экране правильный треугольник, вращающийся в плоскости экрана вокруг своего центра.

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

6. Обеспечить движение по экрану слова, введенного пользователем, по горизонтали – от левого края к правому и обратно.

7. Изобразить на экране правильный треугольник, вращающийся в плоскости экрана вокруг своего центра.

8. Обеспечить движение по экрану окружности от верхнего края к нижнему и обратно.

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

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

11. Изобразить на экране квадрат, вращающийся в плоскости экрана вокруг своего центра.

4.4. Используя компоненты Image и Timer (событие OnTimer, возникающее через заданный интервал Interval компоненты Timer) организовать смену картинок, загружаемых из созданных графических файлов, сформировать анимационный ролик (например, летящую птицу, движущиеся облака, летающую тарелку, растущий цветок и т.п.).

Примечание: желательно создаваемые графические файлы именовать номерами (1.bmp, 2.bmp…). Загрузка очередного файла производится путем применения метода загрузки картинки при возникновении события OnTimer: Image1.Picture.LoadFromFile(IntToStr(i)+'.bmp'). В обработчике этого же события следует менять значение i = 0..Количество файлов.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: