Да... забавная игрушка получилась. Правда, насчет масштаба и фазы я не очень понял, а потому ограничился фазой, причем под фазой подразумевается слагаемое, стоящее в формуле y(t) под косинусом, исходное значение коего равно 6 - вот его я и меняю. Для увеличения фазы на 1 нажимаем ↑ на клавиатуре, соответственно для уменьшения - ↓ (допускаются и отрицательные значения), а для выхода жмем клавишу "Esc".
Код:
Uses CRT, Graph;
Var
Xc,Yc,Xmin,Ymin,Xmax,Ymax,
StepX,StepY,N,Nt:Word;
i,Phase:Integer;
t,Xr,Yr,Dx,Dy,Stept,tmax:Real;
S:String;
Ch:Char;
Function X(tx:real):real;
begin
X:=Sqr(Sqr(Sin(tx*2)))+Sqr(Cos(tx*4))*Cos(tx*4);
end;
Function Y(tx:real):real;
begin
Y:=Sqr(Sqr(Cos(tx*4+Phase)))+Sqr(Sin(tx*4))*Sin(tx*4);
end;
Begin
InitGraph(...); {Здесь сформируйте параметры самостоятельно}
Phase:=6;
Nt:=200;
tmax:=4;
Stept:=tmax/Nt;
Xmin:=40;
Xmax:=640;
Ymin:=20;
Ymax:=460;
Repeat
ClearDevice;
SetFillStyle(SolidFill,GetBkColor);
Bar(500,0,640,40);
SetTextStyle(DefaultFont,HorizDir,2);
SetTextJustify(RightText,TopText);
Str(Phase,S);
OutTextXY(640,15,'Phase = '+S);
SetTextStyle(DefaultFont,HorizDir,1);
SetLineStyle(SolidLn,0,ThickWidth);
Yc:=240;
Line(Xmin,Yc,Xmax,Yc);
Xc:=Xmin;
Line(Xc,Ymin,Xc,Ymax);
StepX:=(Xmax-Xmin) div 10;
Dx:=1.5/10;
N:=(Xmax-Xmin) div StepX;
SetTextJustify(CenterText,TopText);
Yc:=240;
For i:=0 to N do
begin
Xc:=Xmin+i*StepX;
Xr:=Dx*i;
Str(Xr:5:2,S);
If (Xc>Xmin) and (Xc<Xmax) then
begin
Line(Xc,Yc,Xc,Yc-10);
OutTextXY(Xc,Yc+5,S);
end;
end;
StepY:=(Ymax-Ymin) div 10;
Dy:=4.0/10;
N:=(Ymax-Ymin) div StepY;
SetTextJustify(RightText,CenterText);
Xc:=Xmin;
For i:=0 to N do
begin
Yc:=Ymin+i*StepY;
Yr:=2.0-i*Dy;
Str(Yr:4:1,S);
If Yc<>240 then
begin
Line(Xc,Yc,Xc+10,Yc);
OutTextXY(Xc-5,Yc,S);
end;
end;
t:=0;
Xc:=Xmin+Round(X(0)*400);
Yc:=240-Round(Y(0)*110);
SetLineStyle(SolidLn,0,NormWidth);
MoveTo(Xc,Yc);
For i:=1 to 200 do
begin
t:=t+Stept;
Xc:=Xmin+Round(X(t)*400);
Yc:=240-Round(Y(t)*110);
LineTo(Xc,Yc);
end;
Ch:=Readkey;
If Ch=#72 then Inc(Phase) else
If Ch=#80 then Dec(Phase);
Until Ch=#27;
CloseGraph;
End.