Einzelnen Beitrag anzeigen

Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Berührung 2er bewegter Kreise

  Alt 26. Mai 2009, 19:47
Wie wärs mit Vektorrechnung? Hier mal eine Function die ich aufgrund eines Kollisionstest mal schrieb.
Vector ist eine Klasse die die Vektoroperationen beinhaltet.
Delphi-Quellcode:
TSphere=record
  m :TVector;//Stützvektor, Kreismittelpunkt
  a :TVector;//Geschwindigkeitsvektor
  r :Single;//Kreisradius
end;
//..
function collision(k1,k2:TSphere):Single;
var a,b :TVector;
    s,r,t:Single;
begin
 with Vector do begin
  a:=Sub(k1.m,k2.m);
  b:=Sub(k1.a,k2.a);
  r:=k1.r+k2.r;
  t:=Skalar(b,b);
  if t<>0 then begin
   s:=sqr(Skalar(a,b)/t)-Skalar(a,a)/t+r*r/t;
   if s>=0 then
    s:=-Skalar(a,b)/t-sqrt(s)
   else s:=0;
  end else s:=0;
  result:=s;
 end;
end;
Der Rückgabewert der Funktion beinhaltet die Zeiteinheiten bis die Kreise kollidieren. Wenn sie nicht kollidieren s=0.
  Mit Zitat antworten Zitat