type lambda = record
Xn:Double;
Yn:Double;
Xk:Double;
Yk:Double;
Prx:Double;
Pry:Double;
Xc,Yc:Double;
end;
type S =record
Xsn:Double;
Ysn:Double;
Zsn:Double;
Xsk:Double;
Ysk:Double;
Zsk:Double;
PrSx:Double;
PrSy:Double;
PrSz:double;
Modul:Double;
end;
type rlambda =record
AlfaX:Double;
AlfaY:Double;
Prx:Double;
Pry:Double;
end;
type alambda =record
znach:double;
end;
var
AlambdaAlfa_Sa: alambda;
AlambdaAlfa_Sbb: alambda;
AlambdaX_Sa: array [1..100] of array [1..100] of alambda;
AlambdaY_Sa: array [1..100] of array [1..100] of alambda;
AlambdaX_Sbb: array [1..100] of array [1..100] of alambda;
AlambdaY_Sbb: array [1..100] of array [1..100] of alambda;
rlambdaAlfa_Sa: rlambda;
rlambdaAlfa_Sbb: rlambda;
rlambdaX_Sa: array [1..100] of array [1..100] of rlambda;
rlambdaY_Sa: array [1..100] of array [1..100] of rlambda;
rlambdaX_Sbb: array [1..100] of array [1..100] of rlambda;
rlambdaY_Sbb: array [1..100] of array [1..100] of rlambda;
lambdaAlfa:lambda;
Salfa:S;
xrazb: array of Integer;
edtxche,edtyche,edtbay,edtbbx,edtbby,edth,edtdx,edtdy,edtR,edtro,edtbax,edtU:real;
lambdaBetaX:array [0..100] of array [0..100] of lambda;
lambdaBetaY:array [0..100] of array [0..100] of lambda;
Sbeta: array[0..100] of array [0..100] of S;
for q:= 1 to M_count do begin
for p:= 1 to N_count do begin
Sbeta[q,p].Xsn:=StrToFloat(edtxche.text)+StrToFloat(edtdx.text)-strtofloat(edtbbx.text)/2+x/2+(x * (p-1));
Sbeta[q,p].Ysn:=StrToFloat(edtyche.text)+StrToFloat(edtdy.text)+y/2+(y* (q-1));
Sbeta[q,p].Zsn:=0;
Sbeta[q,p].Xsk:=Sbeta[q,p].Xsn;
Sbeta[q,p].Ysk:= Sbeta[q,p].Ysn;
Sbeta[q,p].Zsk:=x*y;
Sbeta[q,p].PrSx:=Sbeta[q,p].Xsk-Sbeta[q,p].Xsn;
Sbeta[q,p].PrSy:= Sbeta[q,p].Ysk- Sbeta[q,p].Ysn;
Sbeta[q,p].PrSz:= Sbeta[q,p].Zsk-Sbeta[q,p].Zsn;
Sbeta[q,p].Modul:= Sqrt(Sqr(Sbeta[q,p].PrSx)+sqr(Sbeta[q,p].PrSy)+ sqr(Sbeta[q,p].PrSz));
for n:=1 to M_count+1 do begin
for m:=1 to N_count do begin
if PositionRG.ItemIndex=0 then begin
with StringGRid1 do
for z:=0 to RowCount-1 do
begin
Rows[z].Clear;
Cells[0, z]:='';
end;
StringGrid1.Cells[0,0] :='Эл.тока lambda';
StringGrid1.Cells[1,0] :='Коор.начала ЭТ поX';
StringGrid1.Cells[2,0] :='Коорд.начала ЭТ поY';
StringGrid1.Cells[3,0] :='Коорд.конца ЭТ поX';
StringGrid1.Cells[4,0] :='Коорд.конца ЭТ поY';
StringGrid1.Cells[5,0] :='Коорд.центра ЭТ поX';
StringGrid1.Cells[6,0] :='Коорд.центра ЭТ поY';
StringGrid1.Cells[7,0] :='Проекции ЭТ на OX';
StringGrid1.Cells[8,0] :='Проекции ЭТ на OY';
StringGrid1.Cells[0,1] :='lambdaAlfa';
StringGrid1.Cells[1,1] := FloatToStr(lambdaAlfa.Xn);
StringGrid1.Cells[2,1] := FloatToStr(lambdaAlfa.Yn);
StringGrid1.Cells[3,1] := FloatToStr(lambdaAlfa.Xk);
StringGrid1.Cells[4,1] := FloatToStr(lambdaAlfa.Yk);
StringGrid1.Cells[5,1] := FloatToStr(lambdaAlfa.Xc);
StringGrid1.Cells[6,1] := FloatToStr(lambdaAlfa.Yc);
StringGrid1.Cells[7,1] := FloatToStr(lambdaAlfa.Prx);
StringGrid1.Cells[8,1] := FloatToStr(lambdaAlfa.Pry);
s:='lambdaBetaX';
k:=1;
for n:= 1 to M_count+ 1 do begin
for m := 1 to N_count do begin
StringGrid1.Cells[0,k+1] := s+inttostr(n)+' '+inttostr(m);
StringGrid1.Cells[0,k+1] := s+inttostr(m)+' '+inttostr(n);
StringGrid1.cells[1,k+1]:= FloatToStr(lambdaBetaX[n,m].Xn);
StringGrid1.cells[2,k+1]:= FloatToStr(lambdaBetaX[n,m].Yn);
StringGrid1.cells[3,k+1]:= FloatToStr(lambdaBetaX[n,m].Xk);
StringGrid1.cells[4,k+1]:= FloatToStr(lambdaBetaX[n,m].Yk);
StringGrid1.cells[5,k+1]:= FloatToStr(lambdaBetaX[n,m].Xc);
StringGrid1.cells[6,k+1]:= FloatToStr(lambdaBetaX[n,m].Yc);
StringGrid1.cells[7,k+1]:= FloatToStr(lambdaBetaX[n,m].PrX);
StringGrid1.cells[8,k+1]:= FloatToStr(lambdaBetaX[n,m].PrY);
k:=k+1;
end;
end;
s1:='lambdaBetaY';
for n:= 1 to M_count do begin
for m:= 1 to N_count+1 do begin
StringGrid1.Cells[0,k+1] := s1+inttostr(n)+' '+inttostr(m);
StringGrid1.Cells[0,k+1] := s1+inttostr(m)+' '+inttostr(n);
StringGrid1.cells[1,k+1]:= FloatToStr(lambdaBetaY[n,m].Xn);
StringGrid1.cells[2,k+1]:= FloatToStr(lambdaBetaY[n,m].Yn);
StringGrid1.cells[3,k+1]:= FloatToStr(lambdaBetaY[n,m].Xk);
StringGrid1.cells[4,k+1]:= FloatToStr(lambdaBetaY[n,m].Yk);
StringGrid1.cells[5,k+1]:= FloatToStr(lambdaBetaY[n,m].Xc);
StringGrid1.cells[6,k+1]:= FloatToStr(lambdaBetaY[n,m].Yc);
StringGrid1.cells[7,k+1]:= FloatToStr(lambdaBetaY[n,m].PrX);
StringGrid1.cells[8,k+1]:= FloatToStr(lambdaBetaY[n,m].PrY);
k:=k+1;
end
end
end
else if PositionRG.ItemIndex=1 then begin
with StringGRid1 do
for z:=0 to RowCount-1 do
begin
Rows[z].Clear;
Cells[0, z]:='';
end;
with StringGRid1 do begin
for q:= 1 to M_count do begin
for p:= 1 to N_count do begin
Cells[0,k+1] := s+inttostr(q)+' '+inttostr(p);
Cells[0,k+1] := s+inttostr(p)+' '+inttostr(q);
Cells[1,k+1] := FloatToStr(Sbeta[q,p].Xsn);
Cells[2,k+1] := FloatToStr(Sbeta[q,p].Ysn);
Cells[3,k+1] := FloatToStr(Sbeta[q,p].Zsn);
Cells[4,k+1] := FloatToStr(Sbeta[q,p].Xsk);
Cells[5,k+1] := FloatToStr(Sbeta[q,p].Ysk);
Cells[6,k+1] := FloatToStr(Sbeta[q,p].Zsk);
Cells[7,k+1] := FloatToStr(Sbeta[q,p].PrSx);
Cells[8,k+1] := FloatToStr(Sbeta[q,p].PrSy);
Cells[9,k+1] := FloatToStr(Sbeta[q,p].PrSz);
Cells[10,k+1]:= FloatToStr(Sbeta[q,p].Modul);
k:=k+1;
end;
end;
end
end
else if PositionRG.ItemIndex=2 then begin
with StringGRid1 do
for z:=0 to RowCount-1 do
begin
Rows[z].Clear;
Cells[0, z]:='';
end;
with StringGRid1 do
begin
Cells[0,0] :='Обозначения радиус вектора';
Cells[1,0] :='Проекции r по X';
Cells[2,0] :='Проекции r по Y';
Cells[3,0] :='Обозначения коэффициента A';
Cells[4,0] :='Значение*(-1)';
Cells[0,1] := 'rlambdaAlfa-Sa';
Cells[1,1] := FloatToStr( rlambdaAlfa_Sa.PrX);
Cells[2,1] := FloatToStr( rlambdaAlfa_Sa.PrY);
Cells[1,13] := FloatToStr( rlambdaAlfa_Sbb.PrX);
Cells[2,13] := FloatToStr( rlambdaAlfa_Sbb.PrY);
Cells[3,1] := 'AlambdaAlfa-Sa';
Cells[4,1] := FloatToStr( AlambdaAlfa_Sa.znach);