Einzelnen Beitrag anzeigen

xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#41

Re: Zusammenstoß von Kugeln

  Alt 30. Jun 2004, 20:56
Zitat von braingrenade:
Delphi-Quellcode:
      vbuf := subvectors(chspr[i].v,chspr[i2].v) ;

       alpha := arccos(dotproduct(chspr[i].v,vbuf)/((magnitude(chspr[i].v)*magnitude(vbuf))));
       lengthv := cos(alpha)*magnitude(chspr[i].v);
       v1 := scalevector(normalize(vbuf),lengthv);

        // ich glaube du musst an dieser Stelle vbuf neu berechnen ... du musst ja meinen VektorA für zwei verschiedene Kugeln berechnen! mit anderen Worten es gibt zwei verschiedene Vektoren A

       alpha := arccos(dotproduct(chspr[i2].v,vbuf)/((magnitude(chspr[i2].v)*magnitude(vbuf))));
       lengthv := cos(alpha)*magnitude(chspr[i2].v);
       v2 := scalevector(normalize(vbuf),lengthv);

       vbuf := addvectors(v1,v2); // vbuf ist am Ende immer (0,0), v1 und v2 sind "Gegenvektoren"

       chspr[i].v := subvectors(chspr[i].v,vbuf);
       chspr[i2].v := addvectors(chspr[i2].v,vbuf);
EDIT: genau das ist der Fehler, du musst bei meinem Kommentar vbuf := -vbuf einsetzen, da das ganze ja für den zweiten Punkt "von der anderen Seite" betrachtet werden muss.

EDIT2: im Übrigen würde ich vbuf umbenennen ... aber das ist wohl eher marginal
Peter Enenkel
blubb
  Mit Zitat antworten Zitat