Компоненты TChart и TPointBox - Создать в среде Lazarus проект, позволяющий строить график функции с помощью компонента TChart. Построить кривую в полярных системах координатах, заданную уравнением с помощью компонента TPointBox.
Описание
Можно переделать под свой вариант.
Цель работы: Научиться строить графики в среде Lazarus с помощью компонентов TСhart и TPointBox.
/ задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
Задание для самостоятельной работы
a) Создать в среде Lazarus проект, позволяющий строить график функции с помощью компонента TChart:

4. 𝑟 = 2(1 + 𝑐𝑜𝑠𝜑) (Кардиоида)
Программа в сделанном виде:






Лабораторная работа № 9
Компоненты TChart и TPointBox.
Цель работы: Научиться строить графики в среде Lazarus с помощью компонентов TСhart и TPointBox.
Теоритическая часть:
Компонент TChart
Для построения различных графиков и диаграмм в Lazarus можно воспользоваться компонентом TChart расположенный на вкладке Chart. Основным свойством компонента является Series – наборы данных (серии), на основе которых и строятся графики или диаграммы. Если дважды щелкнуть по компоненту, размещенному на форме, то мы попадем в редактор серий, рис.1.
| | | |
| | | |
|
Рис.1 Редактор серий
Существуют разные типы Series для построения разных типов графиков или диаграмм, например Line series – для построения линий (графиков), Pie series – для построения круговых диаграмм и т.д.
Если выберите тип серии Line series, то в инспекторе объектов появится объект ChartLineSeries1 типа TLineSeries.
| |
| |
Рис.2 Инспектор объектов
Для того, чтобы создать программно объект типа TLineSeries можно воспользоваться оператором
Chart1LineSeries1:= TLineSeries.Create(Chart1);
Для добавления серии в TChart существует метод:
procedure AddSeries(ASeries: TBasicChartSeries);
Добавление точек в объект типа TLineSeries производится с помощью функции
function AddXY(X, Y: Double): Integer;
Свойство ShowPoints: boolean позволяет показывать или не показы- вать точки на графике.
Свойство SeriesColor: TColor позволяет указать цвет линии.
Пример 1: С помощью компонента Tchart вывести график функции y = sin(x).
Листинг программы:
| |
| |
Рис.3 Интерфейс программы реализующий построение графика функции y = sin(x)
procedure TForm1.BitBtn1Click(Sender: TObject); var
i, n: integer; Chart1LineSeries1: TLineSeries; begin
n:= 100;
Chart1LineSeries1:= TLineSeries.Create(Chart1); Chart1LineSeries1.SeriesColor:= clRed; Chart1LineSeries1.ShowPoints:= false; Chart1.AddSeries(Chart1LineSeries1);
Chart1.Title.Visible:= true; Chart1.Title.Text.Text:= 'График функции sin(x)'; for i:= 0 to n - 1 do Chart1LineSeries1.AddXY(i*Pi*0.02, sin(i*Pi*0.02)); end;
Компонент TPointBox
Компонент Lazarus TPointBox находиться на странице Additional палитры компонентов. Он представляет из себя простое окно с канвой, где можно рисовать произвольные изображения. Графические инструменты содержаться в свойствах Font, Brush и Pen. Канва (холст) содержится в свойстве Canvas компонента. Само рисование программируется в обработчике события onPaint.
Пример 2. Создать в среде Lazarus проект, позволяющий построить график функции
у = х2 - 2, xÎ [-10 ; 10].
Для перехода от естественных координат к экранным воспользуемся формулами:
х1 = Ox + Мx∙х. у1 = Oy - Мy∙у ,
где х , у - естественные координаты, х1 , у1 - экранные координаты, (Ox, Oy) – экранная точка, выбранная в качестве начала координат, Mx , My - масштаб, т.е. длина единичных отрезков в пикселях.
Разработка проекта:
- Разместим на форме компоненты PaintBox1, Label1, Label2, Edit1, Edit2, Button1, Button2 как показано на рис.4.
Рис.4
- Создим процедуру для построения графика функции (двойной щелчок мышкой по Button1)
procedure TForm1.Button1Click(Sender: TObject); var
x1, y1, ox, oy, mx, my, i : integer; x, y: real;
begin
paintbox1.Canvas.Pen.Color:=clblue; //устанавливаем
// синий цвет пера
ox:=paintbox1.Width div 2; //начало координат размещаем
// в центре oy:=paintbox1.Height div 2; // компонента paintbox1} mx:=StrToInt(Edit1.Text); //масштаб по оси x my:=StrToInt(Edit2.Text); //масштаб по оси x paintbox1.Canvas.moveto(0, oy); //строим оси координат paintbox1.Canvas.LineTo(640, oy); paintbox1.Canvas.moveto(ox, 0);
paintbox1.Canvas.LineTo(ox, 480); for i:= -10 to 10 do begin
//разметка оси ox
x1:=ox+mx*i;
paintbox1.Canvas.moveto(trunc(x1), oy-5); paintbox1.Canvas.LineTo(trunc(x1), oy+5);
end;
for i:= -10 to 10 do begin
// разметка оси oy
y1:=oy-my*i;
paintbox1.Canvas.moveto(ox-5, trunc(y1)); paintbox1.Canvas.LineTo(ox+5, trunc(y1));
end;
paintbox1.Canvas.Pen.Color:=clred; //устанавливаем красный
//цвет пера}
x:= -10; y:=sqr(x)-2; //вычисляем координаты начальной
//точки графика}
x1:= trunc(ox+mx*x);
y1:= trunc(oy-my*y); //перевод в экранные координаты
paintbox1.Canvas.moveto(x1, y1); //перемещаем перо в эту
// точку
while x<=10 do
// построение графика функции
begin
y:=sqr(x)-2;
x1:= trunc(ox+mx*x); y1:= trunc(oy-my*y);
paintbox1.Canvas.LineTo(x1, y1); x:=x+0.1;
end;
end;
- Создадим процедуру для очистки формы от графика . Для этого кликним двойным щелчок мышкой по Button2 для того чтобы вызвать событие Click:
procedure TForm1.Button2Click(Sender: TObject); begin
paintbox1.Canvas.Pen.Color:=clblack; paintbox1.Canvas.Brush.Color:=clwhite;
paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height)
;
end;
- Запустить проект и проверим его работу, задавая различный масштаб.
Задание для самостоятельной работы
- Создать в среде Lazarus проект, позволяющий строить график функции с помощью компонента TChart:
- y =
- y =
- y =
1
1 - х
x
1 - х
1
, х Î[- 5;5];
, х Î[- 5;5];
, х Î[- 5;5];
- y
x - x 2
ln x 2
= , х
1 - х
Î[-
5;5];
- y =
cos x , х Î[- p ;p ]; 1 - х
- y =
cos x
sin 3x
, х Î[- p ;p ];
- y = sin x , х Î[- 2p ;2p ];
x
- y =
ctgx
sin 3x
, х Î[- p ;p ];
- y = (1 - x) ln x 2 , х Î[- 5;5];
y = 1 ln x 2 , х Î[- 5;5];
x
y = 1 - x ln x 2 , х Î[- 5;5];
x 2
y = cos x ln x 2 , х Î[- p ;p ];
y = 1 - x
(1 + x)2
, х Î[- 5;5];
y = (1 - x)(1 + 3x) , х Î[- 5;5]; (1 + x)2
1 + x 2
y = (1 + x)2
, х Î[- 5;5];
- y =
cos x , х Î[- 2p ;2p ]; sin 3x
- y =
, х Î[-
3x
5;5];
y = x 2
+ 1 , х Î[- 5;5];
x
y = 3x +
5 , х Î[- 5;5];
x 2
y = 1 - x , х Î[- 5;5];
x + 5x3
б) Построить кривую в полярных системах координатах, заданную уравнением с помощью компонента TPointBox:
- 𝑟 = 𝜑 (Спираль Архимеда)
- 𝑟 = 𝜋/𝜑 (Гиперболическая спираль)
| |
| |
𝜑
- 𝑟 = 2 2𝜋 (Логарифмическая спираль)
- 𝑟 = 2(1 + 𝑐𝑜𝑠𝜑) (Кардиоида)
- 𝑟 = 10 𝑠𝑖𝑛3𝜑 (Четырехлепестковая роза)
- 𝑟2 = 36 𝑐𝑜𝑠2𝜑 (Лемниската Бернулли)
- 𝜑 = 2𝜋 𝑠𝑖𝑛𝑟
- 𝑟 = 10 𝑐𝑜𝑠4𝜑 (Роза)
- 𝑟 = 10 𝜑2 (Спираль Галилео)
10.𝑟2 = 36 𝜑 (Спираль Ферма)
11.𝑟 = 10 𝑠𝑖𝑛2𝜑(Трехлепестковая роза)
12.𝑟 = 41 sin(𝜑/3) Роза
13.𝑟 = 26 sin(4 𝜑/3) Роза
14.𝑟 = 16 sin(𝜑/2) Роза
15.𝑟 = 14 sin(5𝜑/3) Роза
16. 𝑟 = 24 sin2(𝜑) /𝑐𝑜𝑠(𝜑) Циссоида
17.𝑟 = 33 cos(𝜑) + 14 Улитка Паскаля
Примечание
Для перехода от полярных систем координат к декартовым, необходимо воспользоваться следующими формулами:
x = r∙cos j
y = r∙ sin j, где x, y - декардовые координаты.
Переходя к экранным координатам, получим соотношения: xэ = Ox + Mx∙r ∙cos j
yэ = Oy - My∙r∙sin j
Показать/скрыть дополнительное описание
Лабораторная работа №9. Задание а-1, б-4. ЛР Компоненты TChart и TPointBox. Можно переделать под свой вариант. Цель работы: Научиться строить графики в среде Lazarus с помощью компонентов TСhart и TPointBox. / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: Задание для самостоятельной работы a) Создать в среде Lazarus проект, позволяющий строить график функции с помощью компонента TChart: б) Построить кривую в полярных системах координатах, заданную уравнением с помощью компонента TPointBox: 4.
𝑟 = 2(1 + 𝑐𝑜𝑠𝜑) (Кардиоида) Программа в сделанном виде: Лабораторная работа № 9 Компоненты TChart и TPointBox. Цель работы: Научиться строить графики в среде Lazarus с помощью компонентов TСhart и TPointBox. Теоритическая часть: Компонент TChart Для построения различных графиков и диаграмм в Lazarus можно воспользоваться компонентом TChart расположенный на вкладке Chart. Основным свойством компонента является Series – наборы данных (серии), на основе которых и строятся графики или диаграммы. Если дважды щелкнуть по компоненту, размещенному на форме, то мы попадем в редактор серий, рис.1. Рис.1 Редактор серий Существуют разные типы Series для построения разных типов графиков или диаграмм, например Line series – для построения линий (графиков), Pie series – для построения круговых диаграмм и т.д.
Если выберите тип серии Line series, то в инспекторе объектов появится объект ChartLineSeries1 типа TLineSeries. Рис.2 Инспектор объектов Для того, чтобы создать программно объект типа TLineSeries можно воспользоваться оператором Chart1LineSeries1:= TLineSeries.Create(Chart1); Для добавления серии в TChart существует метод: procedure AddSeries(ASeries: TBasicChartSeries); Добавление точек в объект типа TLineSeries производится с помощью функции function AddXY(X, Y: Double): Integer; Свойство ShowPoints: boolean позволяет показывать или не показы- вать точки на графике. Свойство SeriesColor: TColor позволяет указать цвет линии. Пример 1: С помощью компонента Tchart вывести график функции y = sin(x).
Листинг программы: Рис.3 Интерфейс программы реализующий построение графика функции y = sin(x) procedure TForm1.BitBtn1Click(Sender: TObject); var i, n: integer; Chart1LineSeries1: TLineSeries; begin n:= 100; Chart1LineSeries1:= TLineSeries.Create(Chart1); Chart1LineSeries1.SeriesColor:= clRed; Chart1LineSeries1.ShowPoints:= false; Chart1.AddSeries(Chart1LineSeries1); Chart1.Title.Visible:= true; Chart1.Title.Text.Text:= \'График функции sin(x)\'; for i:= 0 to n - 1 do Chart1LineSeries1.AddXY(i*Pi*0.02, sin(i*Pi*0.02)); end; Компонент TPointBox Компонент Lazarus TPointBox находиться на странице Additional палитры компонентов. Он представляет из себя простое окно с канвой, где можно рисовать произвольные изображения.
Графические инструменты содержаться в свойствах Font, Brush и Pen. Канва (холст) содержится в свойстве Canvas компонента. Само рисование программируется в обработчике события onPaint. Пример 2. Создать в среде Lazarus проект, позволяющий построить график функции у = х2 - 2, xÎ [-10 ; 10]. Для перехода от естественных координат к экранным воспользуемся формулами: х1 = Ox + Мx∙х. у1 = Oy - Мy∙у , где х , у - естественные координаты, х1 , у1 - экранные координаты, (Ox, Oy) – экранная точка, выбранная в качестве начала координат, Mx , My - масштаб, т.е. длина единичных отрезков в пикселях. Разработка проекта: Разместим на форме компоненты PaintBox1, Label1, Label2, Edit1, Edit2, Button1, Button2 как показано на рис.4.
Рис.4 Создим процедуру для построения графика функции (двойной щелчок мышкой по Button1) procedure TForm1.Button1Click(Sender: TObject); var x1, y1, ox, oy, mx, my, i : integer; x, y: real; begin paintbox1.Canvas.Pen.Color:=clblue; //устанавливаем // синий цвет пера ox:=paintbox1.Width div 2; //начало координат размещаем // в центре oy:=paintbox1.Height div 2; // компонента paintbox1} mx:=StrToInt(Edit1.Text); //масштаб по оси x my:=StrToInt(Edit2.Text); //масштаб по оси x paintbox1.Canvas.moveto(0, oy); //строим оси координат paintbox1.Canvas.LineTo(640, oy); paintbox1.Canvas.moveto(ox, 0); paintbox1.Canvas.LineTo(ox, 480); for i:= -10 to 10 do begin //разметка оси ox x1:=ox+mx*i; paintbox1.Canvas.moveto(trunc(x1), oy-5); paintbox1.Canvas.LineTo(trunc(x1), oy+5); end; for i:= -10 to 10 do begin // разметка оси oy y1:=oy-my*i; paintbox1.Canvas.moveto(ox-5, trunc(y1)); paintbox1.Canvas.LineTo(ox+5, trunc(y1)); end; paintbox1.Canvas.Pen.Color:=clred; //устанавливаем красный //цвет пера} x:= -10; y:=sqr(x)-2; //вычисляем координаты начальной //точки графика} x1:= trunc(ox+mx*x); y1:= trunc(oy-my*y); //перевод в экранные координаты paintbox1.Canvas.moveto(x1, y1); //перемещаем перо в эту // точку while x<=10 do // построение графика функции begin y:=sqr(x)-2; x1:= trunc(ox+mx*x); y1:= trunc(oy-my*y); paintbox1.Canvas.LineTo(x1, y1); x:=x+0.1; end; end; Создадим процедуру для очистки формы от графика .
Для этого кликним двойным щелчок мышкой по Button2 для того чтобы вызвать событие Click: procedure TForm1.Button2Click(Sender: TObject); begin paintbox1.Canvas.Pen.Color:=clblack; paintbox1.Canvas.Brush.Color:=clwhite; paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height) ; end; Запустить проект и проверим его работу, задавая различный масштаб. Задание для самостоятельной работы Создать в среде Lazarus проект, позволяющий строить график функции с помощью компонента TChart: y = y = y = 1 1 - х x 1 - х 1 , х Î[- 5;5]; , х Î[- 5;5]; , х Î[- 5;5]; y x - x 2 ln x 2 = , х 1 - х Î[- 5;5]; y = cos x , х Î[- p ;p ]; 1 - х y = cos x sin 3x , х Î[- p ;p ]; y = sin x , х Î[- 2p ;2p ]; x y = ctgx sin 3x , х Î[- p ;p ]; y = (1 - x) ln x 2 , х Î[- 5;5]; y = 1 ln x 2 , х Î[- 5;5]; x y = 1 - x ln x 2 , х Î[- 5;5]; x 2 y = cos x ln x 2 , х Î[- p ;p ]; y = 1 - x (1 + x)2 , х Î[- 5;5]; y = (1 - x)(1 + 3x) , х Î[- 5;5]; (1 + x)2 1 + x 2 y = (1 + x)2 , х Î[- 5;5]; y = cos x , х Î[- 2p ;2p ]; sin 3x y = , х Î[- 3x 5;5]; y = x 2 + 1 , х Î[- 5;5]; x y = 3x + 5 , х Î[- 5;5]; x 2 y = 1 - x , х Î[- 5;5]; x + 5x3 б) Построить кривую в полярных системах координатах, заданную уравнением с помощью компонента TPointBox: 𝑟 = 𝜑 (Спираль Архимеда) 𝑟 = 𝜋/𝜑 (Гиперболическая спираль) 𝜑 𝑟 = 2 2𝜋 (Логарифмическая спираль) 𝑟 = 2(1 + 𝑐𝑜𝑠𝜑) (Кардиоида) 𝑟 = 10 𝑠𝑖𝑛3𝜑 (Четырехлепестковая роза) 𝑟2 = 36 𝑐𝑜𝑠2𝜑 (Лемниската Бернулли) 𝜑 = 2𝜋 𝑠𝑖𝑛𝑟 𝑟 = 10 𝑐𝑜𝑠4𝜑 (Роза) 𝑟 = 10 𝜑2 (Спираль Галилео) 10.𝑟2 = 36 𝜑 (Спираль Ферма) 11.𝑟 = 10 𝑠𝑖𝑛2𝜑(Трехлепестковая роза) 12.𝑟 = 41 sin(𝜑/3) Роза 13.𝑟 = 26 sin(4 𝜑/3) Роза 14.𝑟 = 16 sin(𝜑/2) Роза 15.𝑟 = 14 sin(5𝜑/3) Роза 16.
𝑟 = 24 sin2(𝜑) /𝑐𝑜𝑠(𝜑) Циссоида 17.𝑟 = 33 cos(𝜑) + 14 Улитка Паскаля Примечание Для перехода от полярных систем координат к декартовым, необходимо воспользоваться следующими формулами: x = r∙cos j y = r∙ sin j, где x, y - декардовые координаты. Переходя к экранным координатам, получим соотношения: xэ = Ox + Mx∙r ∙cos j yэ = Oy - My∙r∙sin j .
Файлы условия, демо
Характеристики лабораторной работы
Список файлов
