
27.11.2007, 15:25
|
Прохожий
|
|
Регистрация: 27.11.2007
Сообщения: 30
Репутация: 10
|
|
помогите построить графики
Здравствуйте. Я инвалид, изучаю Delphi самостоятельно. Но следующая программа никак не идёт. Не могли бы вы помочь разобраться. Надо написать программу для построения графиков y=cos(wx) y=sin(wx); Delphi постоянно выдаёт информацию о том, что экранные координаты ix, iy неверны. Экранные координаты рассчитываю по формулам в книжке (x-x1)/(x2-x1)=(ix-ix1)/(ix2-ix1). С клавиатуры ввожу данные: количество точек_n=400, частота_w=4, x0=-6.28, xk=6.28, Ymin=-0.22, Ymax=1;
Код:
procedure TForm1.Button2Click(Sender: TObject);
var x,y,x0,xk,Ymax,Ymin,step,w:real;
pw,ph,n,code,i,ix,iy:integer;
begin
val(ntedit.text,n,code); val(wedit.text,w,code);
val(x0edit.text,x0,code); val(xedit.text,xk,code);
val(minedit.text,Ymin,code); val(maxedit.text,Ymax,code);
pw:=paintbox1.Width; ph:=paintbox1.Height;
with paintbox1.Canvas do
begin
refresh; pen.Width:=1; brush.Color:=clRED; pen.Color:=1;
rectangle(0,0,pw,ph);
case radiogroup1.ItemIndex of
0: begin
pen.Width:=2; pen.Color:=clYELLOW; pen.Style:=pssolid;
iy:=round((cos(w*x0)-Ymin)/(ymax-ymin)*ph); step:=(xk-x0)/n;
moveto(0,ph-iy-1); x:=x0;
for i:=2 to n do
begin
x:=x+step; y:=cos(w*x);
ix:=round((x-x0)/(xk-x0)*pw); iy:=round((ymax-ymin)*ph);
lineto(ix,ph-iy-1)
end;
ix:=0;
end;
1: begin
pen.Width:=3; pen.color:=clGREEN; pen.Style:=pssolid;
iy:=round((sin(w*x0)-ymin)/(ymax-ymin)*ph); step:=(xk-x0)/n;
moveto(0,round(ph-iy-1)); x:=x0;
for i:=2 to n do
begin
x:=x+step; y:=sin(w*x);
ix:=round((x-x0)/(xk-x0)*pw); iy:=round((ymax-ymin)*ph);
lineto(ix,ph-iy-1)
end;
ix:=0;
end
end
end
end;
.
Последний раз редактировалось nav, 27.11.2007 в 15:54.
|