Einzelnen Beitrag anzeigen

Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#28

Re: Zusammenstoß von Kugeln

  Alt 30. Jun 2004, 17:42
Ok , ich hab nun meinen Physik-Lehrer gefragt und der hat mir folgende Lösung (siehe Anhang) gegeben, die ich so in Code umgesetzt habe :


Delphi-Quellcode:
type T2dvector = record
    x,y : real;
end;

implementation

function Tchaos.MakeVector(X,Y : real) : T2dVector;
begin
  result.x := x;
  result.y := y;
end;

function Tchaos.Magnitude(Vector : T2dVector) : real;
begin
   result := sqrt(Vector.X * Vector.X+
                  Vector.Y * Vector.Y);
end;

function Tchaos.DotProduct(VectorA,VectorB : T2dVector) : real;
begin
   result := VectorA.X*VectorB.X+
             VectorA.Y*VectorB.Y
end;


...
var
    i,i2,i3 :integer;
    vbuf,v1,v2 : T2dvector;
    alpha,beta,gamma,delta,lengthv : real;
...
       vbuf := makevector((chspr[i].x-chspr[i2].x),(chspr[i].y-chspr[i2].y) ) ;
       alpha := dotproduct(chspr[i].v,vbuf);
       beta := degtorad( 90-radtodeg(alpha));
       gamma := arctan(chspr[i].v.x/chspr[i].v.y);
       delta := beta + gamma;
       lengthv := sin(alpha)*magnitude(chspr[i].v);
       v1 := makevector((sin(delta)/lengthv),(cos(delta)/lengthv));

       alpha := dotproduct(chspr[i2].v,vbuf);
       beta := degtorad( 90-radtodeg(alpha));
       gamma := arctan(chspr[i2].v.x/chspr[i2].v.y);
       delta := beta + gamma;
       lengthv := sin(alpha)*magnitude(chspr[i2].v);
       v2 := makevector((sin(delta)/lengthv),(cos(delta)/lengthv));

       chspr[i].v := v1;
       chspr[i2].v := v2;
...
Nur leider geht das schon wieder nicht
Ich bin aber ziemlich sicher das der Fehler etwas damit zu tun hat das Delphi alles im Bogenmaß ausrechnet, aber ich komm nicht drauf wo der genau liegt.
Angehängte Grafiken
Dateityp: bmp vector_268.bmp (37,2 KB, 31x aufgerufen)
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat