Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

построение синусоиды   Найти похожие ветки 

 
Demon2000   (2002-05-02 11:42) [0]

Народ, а можно сделать так, чтобы на событие onClick в Canvas`e рисовалась синусоида, причем ее параметры (амплитуда, угол) брались бы из поля edit? Большое спасибо.


 
Pat   (2002-05-02 12:03) [1]

Переделаешь, как тебе надо...давно писал, влом разбираться

function f(x:real):real;
begin
try
f:=(sin(3*x)+exp(1+x*x))/
(exp((x+1)*ln(2))*x+1-exp(5*x*x-1));
except
on EMathError do
end;{try}
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
y:array[0..1000] of real;
xn,xk:longint;
ymin,ymax,h:real;

begin
xn:=strtoint(edit1.text);//начальное значение
xk:=strtoint(edit2.text);//конечное значенеие
h:=(xk-xn)/(image1.Width);//длина одного пиксела
ymin:=f(xn);
ymax:=f(xn);

//заполнение массива значений функции
//вычисление максимального и минимального Y
for i:=0 to Image1.Width do
begin
y[i]:=f(xn+i*h);//проход по точкам
if y[i]>ymax then ymax:=y[i];
if y[i]<ymin then ymin:=y[i];
end;

//вывод кривой графика
image1.Canvas.FillRect(rect(0,0,image1.width,image1.height));
image1.Canvas.Pen.Color:=clRed;
image1.Canvas.Pen.Width:=2;
with image1.Canvas do
begin
moveto(0,image1.Height-
round((image1.Height)*(y[0]-ymin)/
(ymax-ymin)));
for i:=1 to image1.Width do
LineTo(i,image1.Height-
round((image1.Height)*(y[i]-ymin)/
(ymax-ymin)));
end;

end;




Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
3-49833
olden
2002-04-18 16:00
2002.05.16
динамическое создание параметров SQL-запроса


6-50078
Beka
2002-03-03 17:33
2002.05.16
Можете мне подсказат как поместит Web-страницу в интернет


3-49870
Gamar
2002-04-19 17:08
2002.05.16
Сумма по ВЫЧИСЛЯЕМОМУ полю


4-50169
cok
2002-03-07 20:49
2002.05.16
Потоки


3-49866
Dorosh
2002-04-15 15:23
2002.05.16
Polaris DbTreeView