Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$loadlib pumbaa.dll}
- var
- s: TStringArray;
- procedure TPAControlPie(var TPA: TPointArray; kind: TControlKind; center: TPoint; RMin, RMax, AStart, AEnd: Extended);
- var
- h, i, t: Integer;
- a, r: Extended;
- begin
- h := High(TPA);
- t := 0;
- case kind of
- ckFilter:
- for i := 0 to h do
- begin
- r := Sqrt((TPA[i].X * TPA[i].X) + (TPA[i].Y * TPA[i].Y));
- if ((r < RMin) or (r > RMax)) then
- begin
- a := ArcTan2((TPA[i].Y - center.Y), (TPA[i].X - center.X));
- if ((a >= AStart) or (a <= AEnd)) then
- begin
- TPA[t] := TPA[i];
- t := (t + 1);
- end;
- end;
- end;
- ckExtract:
- for i := 0 to h do
- begin
- r := Sqrt((TPA[i].X * TPA[i].X) + (TPA[i].Y * TPA[i].Y));
- if ((r >= RMin) and (r <= RMax)) then
- begin
- a := ArcTan2((TPA[i].Y - center.Y), (TPA[i].X - center.X));
- if ((a >= AStart) and (a <= AEnd)) then
- begin
- TPA[t] := TPA[i];
- t := (t + 1);
- end;
- end;
- end;
- end;
- SetLength(TPA, t);
- end;
- var
- TPA: TPointArray;
- begin
- TPA := [Point(0, 0), Point(2, 2), Point(2, 3), Point(5, 10)];
- TPAControlPie(TPA, ckExtract, Point(0, 0), 2.5, 3, Pi / 8, 7 * Pi / 8);
- WriteLn(pp_ToStr(TPA));
- end.
Advertisement
Add Comment
Please, Sign In to add comment