Ich hab mal paar Functions ausgegraben, die einem bei solchen Sachen recht nützlich sind:
Delphi-Quellcode:
function PointInRect(const Point: TPoint; const Rect: TRect): Boolean;
begin
Result := (Point.X >= Rect.Left) and
(Point.X <= Rect.Right) and
(Point.Y >= Rect.Top) and
(Point.Y <= Rect.Bottom);
end;
function RectInRect(const Rect1, Rect2: TRect): Boolean;
begin
Result := (Rect1.Left >= Rect2.Left) and
(Rect1.Right <= Rect2.Right) and
(Rect1.Top >= Rect2.Top) and
(Rect1.Bottom <= Rect2.Bottom);
end;
function OverlapRect(const Rect1, Rect2: TRect): Boolean;
begin
Result := (Rect1.Left < Rect2.Right) and
(Rect1.Right > Rect2.Left) and
(Rect1.Top < Rect2.Bottom) and
(Rect1.Bottom > Rect2.Top);
end;
function PointInCircle(PPos,CPos: TPoint; R: integer): Boolean;
begin
Result := (PPos.X - CPos.X)*(PPos.X - CPos.X)+(PPos.Y - CPos.Y)*(PPos.Y - CPos.Y)<= R*R;
end;
function CircleInCircle(C1Pos,C2Pos: TPoint; R1,R2:Integer): Boolean;
begin
Result := (C1Pos.X - C2Pos.X)*(C1Pos.X - C2Pos.X)+(C1Pos.Y - C2Pos.Y)*(C1Pos.Y - C2Pos.Y) <= (R1+R2)*(R1+R2);
end;
Gruß
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)