Главная страница
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.46 MB
Время: 0.011 c
1-50046
UDS
2002-04-28 17:16
2002.05.16
Разбитие строк на слова. Задача усложняется.


4-50171
Fellomena
2002-03-05 16:07
2002.05.16
Вопрос к ASMатикам ;)


14-50124
Song
2002-04-08 08:51
2002.05.16
Вирус тут пришёл... Даже не знаю чего и делать-то :)))


3-49829
aw
2002-04-17 18:42
2002.05.16
Если в SQL функции типа FloatFormat?


7-50140
ut1wpr
2002-02-17 16:26
2002.05.16
Получить адреса портов из BIOSa ?