Janilabo

pie

Dec 27th, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.27 KB | None | 0 0
  1. {$loadlib pumbaa.dll}
  2.  
  3. var
  4.   s: TStringArray;
  5.  
  6. procedure TPAControlPie(var TPA: TPointArray; kind: TControlKind; center: TPoint; RMin, RMax, AStart, AEnd: Extended);
  7. var
  8.   h, i, t: Integer;
  9.   a, r: Extended;
  10. begin
  11.   h := High(TPA);
  12.   t := 0;
  13.   case kind of
  14.     ckFilter:
  15.     for i := 0 to h do
  16.     begin
  17.       r := Sqrt((TPA[i].X * TPA[i].X) + (TPA[i].Y * TPA[i].Y));
  18.       if ((r < RMin) or (r > RMax)) then
  19.       begin
  20.         a := ArcTan2((TPA[i].Y - center.Y), (TPA[i].X - center.X));
  21.         if ((a >= AStart) or (a <= AEnd)) then
  22.         begin
  23.           TPA[t] := TPA[i];
  24.           t := (t + 1);
  25.         end;
  26.       end;
  27.     end;
  28.     ckExtract:
  29.     for i := 0 to h do
  30.     begin
  31.       r := Sqrt((TPA[i].X * TPA[i].X) + (TPA[i].Y * TPA[i].Y));
  32.       if ((r >= RMin) and (r <= RMax)) then
  33.       begin
  34.         a := ArcTan2((TPA[i].Y - center.Y), (TPA[i].X - center.X));
  35.         if ((a >= AStart) and (a <= AEnd)) then
  36.         begin
  37.           TPA[t] := TPA[i];
  38.           t := (t + 1);
  39.         end;
  40.       end;
  41.     end;
  42.   end;
  43.   SetLength(TPA, t);
  44. end;
  45.  
  46. var
  47.   TPA: TPointArray;
  48.  
  49. begin
  50.   TPA := [Point(0, 0), Point(2, 2), Point(2, 3), Point(5, 10)];
  51.   TPAControlPie(TPA, ckExtract, Point(0, 0), 2.5, 3, Pi / 8, 7 * Pi / 8);
  52.   WriteLn(pp_ToStr(TPA));
  53. end.
Advertisement
Add Comment
Please, Sign In to add comment