procedure bezz_polar_sector(amp1,amp2,amp3,amp4:single);
var
p1: array[0..1] of Single;
P:TpointF;
a1,a2,a3,a4: array [0..1] of Single;
t,k, max_ampl,deg: Single;
begin
amp:=amp1+amp2+amp3+amp4;
a1[0]:=11.25; a1[1]:=form1.Pie4.Height/67000*amp1;
a2[0]:=33.75; a2[1]:=form1.Pie4.Height/67000*amp2;
a3[0]:=56.25; a3[1]:=form1.Pie4.Height/67000*amp3;
a4[0]:=78.75; a4[1]:=form1.Pie4.Height/67000*amp4;
max_ampl:=0;
max_deg:=0;
t:=0; deg:=0;
form1.Pie4.Canvas.Stroke.Color:=talphacolors.Lime;
form1.Pie4.Canvas.Stroke.Thickness:=1;
unit1.path_polar_sector.Clear;
unit1.path_polar_sector.MoveTo(PointF(form1.Pie4.Width/2,form1.Pie4.Height/2));
while t<=1 do begin
k:=1-t;
p1[0]:= Power(k,3)*a1[0]+3*t*power(k,2)*a2[0]+3*power(t,2)*k*a3[0]+power(t,3)*a4[0];
p1[1]:=(Power(k,3)*a1[1]+3*t*power(k,2)*a2[1]+3*power(t,2)*k*a3[1]+power(t,3)*a4[1]);
if max_ampl<=p1[1] then
begin
max_ampl:=p1[1]; max_deg:=p1[0];
end;
P.X:=256+p1[1]*sin(degtorad(p1[0]));
P.y:=256-p1[1]*cos(degtorad(p1[0]));
unit1.path_polar_sector.LineTo(pointf(p.X,p.Y));
unit1.path_polar_sector.LineTo(PointF(form1.Pie4.Width/2,form1.Pie4.Height/2));
t:=t+0.01;
end;
if (max_deg>=22.5) and (max_deg<=67.5) then begin
Form1.Circle2.Visible:=True;
Form1.Circle2.Position.X:=256+max_ampl*sin(degtorad(max_deg))+Form1.Circle2.Width/2;
Form1.Circle2.Position.Y:=256-max_ampl*cos(degtorad(max_deg))-Form1.Circle2.Height*2;
deg:= (trunc((max_deg+angle_s[start_ant])*10))/10;
if deg>360 then deg:=deg-360;
Form1.Label3.text:= 'К. Угол '+Floattostr(Round(deg))+'°';
unit4.pel:=Round(deg);
unit4.sum_ampl:=round(amp);
end else begin
Form1.Circle2.Visible:=False;
Form1.Label3.text:= '';
unit4.pel:=-1;
end;
//
// deg:= (trunc((max_deg+angle_s[start_ant])*10))/10;
// if deg>360 then deg:=deg-360;
// Form1.Caption:=TimeToStr(now)+' cтарт.ант- '+IntToStr(start_ant)+' центр.частота-'+
// IntToStr( a[frequency,2])+' '+mode;
// Form1.Label3.text:= 'К. Угол '+Floattostr(Round(deg))+'°';
form1.Pie4.Repaint;
end;
var
p1: array[0..1] of Single;
P:TpointF;
a1,a2,a3,a4: array [0..1] of Single;
t,k, max_ampl,deg: Single;
begin
amp:=amp1+amp2+amp3+amp4;
a1[0]:=11.25; a1[1]:=form1.Pie4.Height/67000*amp1;
a2[0]:=33.75; a2[1]:=form1.Pie4.Height/67000*amp2;
a3[0]:=56.25; a3[1]:=form1.Pie4.Height/67000*amp3;
a4[0]:=78.75; a4[1]:=form1.Pie4.Height/67000*amp4;
max_ampl:=0;
max_deg:=0;
t:=0; deg:=0;
form1.Pie4.Canvas.Stroke.Color:=talphacolors.Lime;
form1.Pie4.Canvas.Stroke.Thickness:=1;
unit1.path_polar_sector.Clear;
unit1.path_polar_sector.MoveTo(PointF(form1.Pie4.Width/2,form1.Pie4.Height/2));
while t<=1 do begin
k:=1-t;
p1[0]:= Power(k,3)*a1[0]+3*t*power(k,2)*a2[0]+3*power(t,2)*k*a3[0]+power(t,3)*a4[0];
p1[1]:=(Power(k,3)*a1[1]+3*t*power(k,2)*a2[1]+3*power(t,2)*k*a3[1]+power(t,3)*a4[1]);
if max_ampl<=p1[1] then
begin
max_ampl:=p1[1]; max_deg:=p1[0];
end;
P.X:=256+p1[1]*sin(degtorad(p1[0]));
P.y:=256-p1[1]*cos(degtorad(p1[0]));
unit1.path_polar_sector.LineTo(pointf(p.X,p.Y));
unit1.path_polar_sector.LineTo(PointF(form1.Pie4.Width/2,form1.Pie4.Height/2));
t:=t+0.01;
end;
if (max_deg>=22.5) and (max_deg<=67.5) then begin
Form1.Circle2.Visible:=True;
Form1.Circle2.Position.X:=256+max_ampl*sin(degtorad(max_deg))+Form1.Circle2.Width/2;
Form1.Circle2.Position.Y:=256-max_ampl*cos(degtorad(max_deg))-Form1.Circle2.Height*2;
deg:= (trunc((max_deg+angle_s[start_ant])*10))/10;
if deg>360 then deg:=deg-360;
Form1.Label3.text:= 'К. Угол '+Floattostr(Round(deg))+'°';
unit4.pel:=Round(deg);
unit4.sum_ampl:=round(amp);
end else begin
Form1.Circle2.Visible:=False;
Form1.Label3.text:= '';
unit4.pel:=-1;
end;
//
// deg:= (trunc((max_deg+angle_s[start_ant])*10))/10;
// if deg>360 then deg:=deg-360;
// Form1.Caption:=TimeToStr(now)+' cтарт.ант- '+IntToStr(start_ant)+' центр.частота-'+
// IntToStr( a[frequency,2])+' '+mode;
// Form1.Label3.text:= 'К. Угол '+Floattostr(Round(deg))+'°';
form1.Pie4.Repaint;
end;