function 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;