3.33. , . , Polusfera, F:\temp\Tmas.dat ( ). , ComboBox1. Botton1 ListBox1 , , .
, . , .
3.33.
Button1Click.
Procedure Tform6.Button1Click(Sender: Tobject);
Const M=50; N=50;
var T: array [1..M,1..N] of real;
Tmax, Tmin, DT, Tlin: real;
Nlin,I,j: integer;
F: File of real;
Procedure IZOLIN;
var l,b:integer; //
w,h:integer; //
I, j, lin, k, e: integer;
ri, rj: real;
flag: oolean;
Procedure Pixels_9(e,k:integer);// 33
var i1,j1:integer;
Begin
for i1:= -1 to 1 do
for j1:= -1 to 1 do
Form6.Canvas.Pixels[e+i1,k+j1]:=clBlack;
end;
Begin
l:=130; // 130
b:=Form6.ClientHeight-20; //Y
h:=Form6.ClientHeight-40; //
w:=Form6.ClientWidth-(l+20); //
if M>N then w:=round(w*N/M); //
if M<N then h:=round(h*M/N); //
With Form6.Canvas do
Begin
//
MoveTo (l, b-h); LineTo(l,b); LineTo(l+w,b);
LineTo(l+w,b-h); LineTo(l,b-h);
//
for lin:=1 to Nlin do
Begin
Tlin:=Tmin+(lin-1)*DT;
flag:=true;
//
For i:=1 to M-1 do
Begin k:=round(h/M*(M-i)+b-h); // . Y
For j:=1 to N-1 do
Begin
If (Tlin>=T[I,j]) and (T[I,j+1]>=Tlin) or (Tlin<=T[I,j]) and
(Tlin >= T[i,j+1])
then Begin //-
if abs(T[I,j+1]-T[I,j])<1E-6//
then rj:=j+1
else rj:=j+(Tlin-T[I,j])/(T[I,j+1]-T[I,j]);
e:=round(l+w/N*rj);//. X
Pixels_9(e,k) //
End
End
end;
//
|
|
For j:=1 to N-1 do
Begin e:=round(l+w/N*j); //. X
For i:=1 to M-1 do
Begin
If (Tlin>=T[I,j]) and (Tlin<=T[i+1,j]) or (Tlin<=T[I,j]) and
(Tlin>=T[i+1,j])
then Begin //y-
if abs(T[i+1,j]-T[I,j])<1E-6 then ri:=i+1
else ri:=i+(Tlin-T[I,j])/(T[i+1,j]-T[I,j]);
k:=round(h/M*(M-ri)+b-h); //. Y
//
If flag then begin TextOut(e,k,IntToStr(lin));
flag:=false end
else Pixels_9(e,k) //
End
End
End
end //
end // end with
end; //
Begin
AssignFile(F,F:\temp\Tmas.dat); Reset(F);
for I:= 1 to M do
for j:= 1 to N do Read(F,T[I,j]);//
// max min T
Tmax:=T[1,1]; Tmin:=T[1,1];
For i:=1 to M do
For j:=1 to N do
Begin
If T[I,j]>Tmax then Tmax:=T[I,j];
If T[I,j]<Tmin then Tmin:=T[I,j]
End;
// ComboBox1
Nlin:=StrToInt(ComboBox1.Items[ComboBox1.ItemIndex]);
DT:=(Tmax-Tmin)/(Nlin-1); //
// ListBox1
ListBox1.Items.Add(' ');
for I:= 1 to Nlin do
Begin
ListBox1.Items.Add(IntToStr(i)+:T=+FloatToStrF(Tmin+(i-1) *DT,ffGeneral,4,2))
end;
IZOLIN //
end;
. , . , .
1. . ( M×N), (.3.34)
2. Nlin. , , (Tmin) (Tmax) DT=(Tmax-Tmin)/(Nlin-1).
3. Tlin , . : . . , . , rj, : rj:=j+(Tlin-T[I,j])/(T[I,j+1]-T[I,j]). : j≤rj≤j+1. : ri:=i+(Tlin-T[I,j])/(T[i+1,j]-T[I,j]). i≤ri≤i+1.
4. (i,rj) (ri,j) (Canvas - ). , , e, k. 3×3 . e, k . Pixels_9. . flag.
|
|
: M N, , . .
1. ?
2. ?
3. ? ? ?
4. Delphi ?
5. :
- ?
- ?
- ?
- ?
- ?