Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 2
1

Вывод графика функции

30.11.2017, 11:16. Показов 1892. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста создать программу вывода на форме графиков функции. Должно быть три варианта рисования графика.
1) Точками при помощи Pixels
2) Линия с использованием LineTo
3) C помощью TChart
Функция sin(x)+sin(2x)
Х начальное = 0
Х конечное = 6*pi
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2017, 11:16
Ответы с готовыми решениями:

Вывод графика функции на форму
Нужно вывести график функции: Log(x^2-4) на форму. Т.к. в Delphi есть только Ln и Lg (натуральный...

Построение графика функции с использованием подпрограммы-функции
Помогите с задачей: требуется написать программу для построения графика функции, где начальные...

Вывод графика
помогите пожалуста! никак немогу понять почему у меня не дорисовывает график! график выводиться с...

Вывод на печать Графика
Как вывести на печать график, созданный с помощью компонента Chart?

4
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
30.11.2017, 11:19 2
Цитата Сообщение от VanyaSolyre Посмотреть сообщение
Помогите пожалуйста
Чем? Что Вы сделали?
0
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 2
30.11.2017, 11:24  [ТС] 3
Я вообще таксист. И плохо шарю. Нашел похожее задание, но не понимаю как переделать под мою функцию.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
const
  a=400;
  b=200;
var
  i:integer;
  k:real;
  y:real;
  
 
procedure TForm1.Button1Click(Sender: TObject);
begin
k:=StrToFloat(Edit1.Text);
with image1.Canvas do
begin
  image1.Canvas.FillRect(ClientRect);
  pen.color:=clRed;
  moveTO(0,b); lineto(2*a,b);
  moveTO(a,0); lineto(a,2*b);
  for i:=-a to a do
  begin
    y:=sin(k*pi*i/a);
    pixels[i+a,b-round(180*y)]:=clNavy;
    application.ProcessMessages;
    end;
end;
end;
 
end.
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
30.11.2017, 15:08 4
Построение графиков функций на канве (Canvas)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.11.2017, 15:57 5
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const xn=0;
      xk=6*pi;
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function f(x:double):double;
begin
f:=sin(x)+sin(2*x)
end;
procedure TForm1.Button1Click(Sender: TObject);
var x0,y0,i:integer;
    x,mx,my:double;
begin
x:=xn;
//TChart
while x<=xk do
 begin
  Series1.AddXY(x,f(x),'',clRed);
  x:=x+0.01;
 end;
 //линия
 with Image1 do
 begin
  x0:=50;
  y0:=height div 2;
  mx:=(width-x0-20)/xk;
  my:=(y0-50)/2;
  with  Canvas do
   begin
    Brush.Color:=clSkyBlue;
    FillRect(ClipRect);
    moveto(x0,y0);
    Lineto(width-10,y0);
    Moveto(x0,10);
    Lineto(x0,height-10);
    for i:=1 to trunc(xk)+1 do
     begin
      moveto(x0+round(i*mx),y0-3);
      lineto(x0+round(i*mx),y0+3);
      textout(x0+round(i*mx)-5,y0+10,inttostr(i));
     end;
    for i:=1 to 4 do
     begin
      moveto(x0-3,y0-round(i/2*my));
      lineto(x0+3,y0-round(i/2*my));
      textout(x0-25,y0-round(i/2*my)-5,formatfloat('0.0',i/2));
      moveto(x0-3,y0+round(i/2*my));
      lineto(x0+3,y0+round(i/2*my));
      textout(x0-25,y0+round(i/2*my)-5,formatfloat('0.0',i/2));
     end;
    Textout(x0,y0+10,'0');
    Textout(x0-20,y0-5,'0');
    Textout(width-20,y0-20,'X');
    Textout(x0+10,10,'Y');
   end;
  end;
x:=xn;
Image1.Canvas.Pen.Color:=clRed;
while x<=xk do
 begin
 if x=xn then Image1.Canvas.MoveTo(x0+round(x*mx),y0-round(f(x)*my))
  else Image1.Canvas.LineTo(x0+round(x*mx),y0-round(f(x)*my));
  x:=x+0.01;
 end;
 //точки
 with Image2 do
 begin
  x0:=50;
  y0:=height div 2;
  mx:=(width-x0-20)/xk;
  my:=(y0-50)/2;
  with  Canvas do
   begin
    Brush.Color:=clSkyBlue;
    FillRect(ClipRect);
    moveto(x0,y0);
    Lineto(width-10,y0);
    Moveto(x0,10);
    Lineto(x0,height-10);
    for i:=1 to trunc(xk)+1 do
     begin
      moveto(x0+round(i*mx),y0-3);
      lineto(x0+round(i*mx),y0+3);
      textout(x0+round(i*mx)-5,y0+10,inttostr(i));
     end;
    for i:=1 to 4 do
     begin
      moveto(x0-3,y0-round(i/2*my));
      lineto(x0+3,y0-round(i/2*my));
      textout(x0-25,y0-round(i/2*my)-5,formatfloat('0.0',i/2));
      moveto(x0-3,y0+round(i/2*my));
      lineto(x0+3,y0+round(i/2*my));
      textout(x0-25,y0+round(i/2*my)-5,formatfloat('0.0',i/2));
     end;
    Textout(x0,y0+10,'0');
    Textout(x0-20,y0-5,'0');
    Textout(width-20,y0-20,'X');
    Textout(x0+10,10,'Y');
   end;
  end;
x:=xn;
while x<=xk do
 begin
  Image2.Canvas.Pixels[x0+round(x*mx),y0-round(f(x)*my)]:=clRed;
  x:=x+0.01;
 end;
end;
Вложения
Тип файла: rar График 3 метода.rar (223.5 Кб, 8 просмотров)
1
30.11.2017, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2017, 15:57
Помогаю со студенческими работами здесь

Вывод графика двух одномерных массивов
Как при помощи двух одномерных массивов записанных в компонентах StringGrid2 и StringGrid3 вывести...

Вывод графика, изменение масштаба подписи осей
Привет! Подскажите пожалуйста, кто знает: как сделать в Delphi chart подпись горизонтальной оси...

Функции графика
Помогите написать программы на делфи: 1. Обратно – пропорциональная зависимость; 2....

Функции графика
Разработать программу – тренажер &quot;Графики математических функций&quot;. Программа должна позволять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru