Thema: Delphi SQR Funktion / Ping Pong

Einzelnen Beitrag anzeigen

Andi28

Registriert seit: 6. Okt 2008
23 Beiträge
 
Delphi 2006 Personal
 
#1

SQR Funktion / Ping Pong

  Alt 7. Okt 2008, 19:42
Da mir geraten wurde mit dieser Funktion :

Delphi-Quellcode:
function PointInCircle(p, center:TPoint; radius:integer):Boolean;
begin
  // SQR() = Square-Funktion = quadrieren
  // Hier wird die Formel a^2 + b^2 = c^2 von Pythagoras ausgenützt
  Result := SQR(p.x-center.x) + SQR(p.y-center.y) <= SQR(radius);
end;
meinen Quelltext :
Delphi-Quellcode:
 // testen, ob der Kreis den linken Endpunkt der Linie berührt

 rq := (shape1.width div 2); rq := rq*rq; // rq = radius zum Quadrat
 ax := (shape1.Left + shape1.Width div 2) - shape2.left; // ax = abstand in x-richtung
 ay := (shape1.top + shape1.Height div 2) - shape2.top; // ay = abstand in y-richtung
 aq := ax*ax + ay*ay; // aq = Abstand zum Quadrat

 if aq > rq then
  begin
   dx := -dx;
   dy := -dy;
  end;

 ay := (shape1.top + shape1.Height div 2) - shape2.top - shape2.Height; // ay = abstand in y-richtung
 aq := ax*ax + ay*ay; // aq = Abstand zum Quadrat
 if aq > rq then
  begin
   dx := -dx;
   dy := -dy;
  end;
  // testen, ob der Kreis den rechten Endpunkt der Linie berührt

 ax := shape2.Left+shape2.width-shape1.left-shape1.width div 2; // ax = abstand in x-richtung
 aq := ax*ax + ay*ay; // aq = Abstand zum Quadrat

 if aq > rq then
  begin
   dx := -dx;
   dy := -dy;
  end;

 ax := shape2.Left+shape2.width-shape1.left-shape1.width div 2; // ax = abstand in x-richtung
 ay := (shape1.top + shape1.Height div 2) - shape2.top; // ay = abstand in y-richtung
 aq := ax*ax + ay*ay; // aq = Abstand zum Quadrat
 if aq > rq then
  begin
   dx := -dx;
   dy := -dy;
  end;


zu vereinfachen. Doch als ich mich ebend näher deamit auseinander gesetzt habe ist mir aufgeallen das ich diese Funktion an sich verstehe aber nicht ganz weiß wofür

 Result := SQR(p.x-center.x) + SQR(p.y-center.y) <= SQR(radius); p.x-center.x und p.y-center.y steht.



Kann mir vielleicht wer dabei helfen ?!Mein eigentliches Problem was mich zu dieser Funktion brachte , war das mein Pong Spiel nicht waagerecht funktionierte , da mein Shape1 (Kugel) immer an der linken und rechten Seite durch dsa Sahpe2 durchläuft anstatt abzuprallen..

Über eine Anwtort oder ein Beispiel an einer Änderung meines Quelltextes freuen , da ich schon knapp 2 Tage an diesem Problem rästel und was mich davon abhält weiterzuarbeiten


Mfg Andi
  Mit Zitat antworten Zitat