Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Timoshka_
2 / 2 / 0
Регистрация: 30.10.2010
Сообщений: 84
1

График функции, заданной параметрически

09.10.2011, 16:31. Просмотров 813. Ответов 0
Метки нет (Все метки)

задание построить параметрический график функций x=t*cos(2t) и y=t*sin(2t)
сказали что нужно просто заменить функции в коде
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
111
112
113
114
115
116
117
118
119
120
121
122
123
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    btn1: TButton;
    edt1: TEdit;
    lbl1: TLabel;
    pnl1: TPanel;
    lbl3: TLabel;
    lbl4: TLabel;
    procedure btn1Click(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TGraf = record
    xm,ym: Integer;
    point: array[0..2560,0..1] of integer;
  end;
 
var
  Form1: TForm1;
  grafic: TGraf;
 
 
implementation
 
uses Math;
 
{$R *.dfm}
 //расчет графика
procedure postr(a:Integer);
var
  x,y,i:integer;
begin
  x:=-(grafic.xm div 2);
  For i:=0 to grafic.xm do
  begin
    y:=Round((-2*x*x*x-6*sqr(x)-8)/a);
    grafic.point[i,0]:=x;
    grafic.point[i,1]:=y;
    inc(x);
  end;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
var
  xn,yn,i,a:Integer;
begin
  try
    a:=StrToInt(edt1.Text);
  except
    lbl4.Caption:=('Неверные данные!');
  end;
  if a<=0 then
  begin
    lbl4.Caption:=('Введено отрицательное число!');
    Exit;
    end;
 
  Form1.Canvas.FillRect(ClientRect);
  grafic.xm:=Form1.Width;  //ширина формы
  grafic.ym:=Form1.Height; //длина формы
  //риcуем оси
  Form1.Canvas.Pen.Color := RGB(150,150,150);
  Form1.Canvas.MoveTo(grafic.xm div 2,0);
  Form1.Canvas.LineTo(grafic.xm div 2,grafic.ym);
  Form1.Canvas.MoveTo(0,grafic.ym-270);
  Form1.Canvas.LineTo(grafic.xm,grafic.ym-270);
  //рисуем график
  postr(a);
  Form1.Canvas.Pen.Color := RGB(30,144,255);
  Form1.Canvas.MoveTo((grafic.xm div 2)-grafic.point[0,0],
                      (grafic.ym - 270)-grafic.point[0,1]);
  for i:=0 to grafic.xm do
  begin
    Form1.Canvas.LineTo((grafic.xm div 2)-grafic.point[i,0],
                        (grafic.ym - 270)-grafic.point[i,1]);
  end;
end;
 
 
procedure TForm1.FormClick(Sender: TObject);
var
  Mus: TPoint;
  a,mx,my,y1,y2,y3,y4: integer;
begin
  Form1.btn1.Click;
  a:=StrToInt(edt1.Text);
  GetCursorPos(Mus); //координаты на экране
  mus:=ScreenToClient(mus);  //координаты на форме
  mx:=Round(Mus.X)-(grafic.xm div 2);
  my:=grafic.ym-Round(Mus.Y)-100;
  //нормаль
  if mx=0 then y1:=0 else y1:=Round((-a)*(mx+(grafic.xm div 2))/(-6*sqr(mx)-12*mx)+my);
  if mx=0 then y2:=0 else y2:=Round((-a)*(mx-(grafic.xm div 2))/(-6*sqr(mx)-12*mx)+my);
  Form1.Canvas.Pen.Color := RGB(237,38,54);
  if mx<>0 then
  begin
  Form1.Canvas.MoveTo(0,(grafic.ym - 100)-y1);
  Form1.Canvas.LineTo(grafic.xm,(grafic.ym - 100)-y2);
  end else
  begin
  Form1.Canvas.MoveTo(grafic.xm div 2,0);
  Form1.Canvas.LineTo(grafic.xm div 2,grafic.ym);
  end;
  //касательная
  y3:=Round(((-6*sqr(mx)-12*mx)*(mx+(grafic.xm div 2)))/a+my);
  y4:=Round(((-6*sqr(mx)-12*mx)*(mx-(grafic.xm div 2)))/a+my);
  Form1.Canvas.Pen.Color := RGB(00,00,00);
  Form1.Canvas.MoveTo(0,(grafic.ym - 100)-y3);
  Form1.Canvas.LineTo(grafic.xm,(grafic.ym - 100)-y4);
end;
end.
но я не знаю как правильно это сделать, потому что нужно чтобы еще строилась касательная и нормаль(
кто знает помогите пожалуйста, заранее спасибо!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 16:31
Ответы с готовыми решениями:

Составить программу движения объекта по графику функции ”Астроида”, заданной параметрически:
Составить программу движения объекта по графику функции ”Астроида”, заданной...

Создать параметрически заданный график
Проблема в следующем. Мне необходимо построить параметрически заданный график...

график заданной функции
Задача заключается в следующем, Нужно написать программу, строящую график...

Построить график функции, заданной выбором из выпадающего списка
Добрый вечер. Необходимо построить график функции, заданной выбором из...

Как сделать график по заданной формуле написанной в эдите
здравствуйте уважаемые форумчане мне написать программу рисующую графики по...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2011, 16:31

Для заданной функции рассчитать n значений функции с равномерным шагом изменения аргумента x
Для заданной функции Y = f(x) на интервале x { : 1) рассчитать n значений...

График функции
Простите за очень простой вопрос, но как построить график функции y=3-2*x-x^3,...

график функции
unit Unit6; interface uses Windows, Messages, SysUtils, Variants,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru