rendered paste bodyfunction TForm1.ReadWindAngle : Integer;
var
wPixel : word;
bRed, bGreen : byte;
fHighest, fLowest, fTotalMedian : single;
fMedian: array[1..6] of double;
fCurAngle, nRadius, z, nX, nY, f, c : integer;
begin
z:=0;
fhighest:=0;
flowest:=0;
fTotalMedian:=0;
fCurAngle:=0;
for nRadius:=21 to PRED(27) do
begin
inc(z);
for fCurAngle:=0 to PRED(360) do
begin
nX := Trunc(241 + (cos(DegToRad(fCurAngle)) * nRadius)); //old interface
nY := Trunc(573 + (sin(DegToRad(fCurAngle)) * nRadius)); //old interface
//nX := Trunc(400 + (cos(DegToRad(fCurAngle)) * nRadius)); //new interface
//nY := Trunc(27 + (sin(DegToRad(fCurAngle)) * nRadius)); //new interface (use SinCos)
Memo1.Text := IntToHex(wPixel,2);
wPixel := form1.canvas.Pixels[nX, nY];
bRed := (wPixel and $FF);
bGreen := (wPixel shr 8) and $FF;
Edit1.Text := IntToHex(bRed,2);
Edit2.Text := IntToHex(bGreen,2);
if (bRed > $17) and (bGreen < $8) then
begin
if fLowest <> 1 then
begin
fHighest := fCurAngle;
fLowest := fCurAngle
end else if ((fCurAngle - fLowest) < 27) then
fHighest := fCurAngle;
end;
end;
fMedian[z] := (fLowest + fHighest) / 2.00;
fHighest := 0;
fLowest := 0;
f:=0;
c:=0;
end;
for f:=0 to 6 do
if fMedian[z] <> 0 then begin
fTotalMedian := fTotalMedian + fMedian[f];
inc(c);
end;
fTotalMedian := fTotalMedian / c;
wa := FloatToStr(fTotalMedian);
end;