AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zusammenstoß von Kugeln

Ein Thema von braingrenade · begonnen am 28. Jun 2004 · letzter Beitrag vom 4. Jul 2004
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    
Benutzerbild von braingrenade
braingrenade

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

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 17:47
So , nu hab ich mir ne Lösung ausgedacht (siehe anhang) die aber nicht funktionert

In code Hab ich das so realisiert :


Delphi-Quellcode:
  var
    i,i2,i3 :integer;
    vbuf,v1,v2 : T2dvector;
    alpha,beta,gamma,lengthv : real;

      ...
 
       vbuf := makevector((chspr[i].x-chspr[i2].x),(chspr[i].y-chspr[i2].y) ) ;
       //chspr ist ein array meiner Chaossprite Klasse, x und y ist die Position des Sprites vom Typ
       //real, v ist der Vektor des Sprites, v.x und v.y sind auch real
        

       alpha := dotproduct(chspr[i].v,vbuf);
       beta := arctan(chspr[i].v.x/chspr[i].v.y);
       gamma := alpha - beta;
       lengthv := cos(alpha)*(sqrt( sqr(chspr[i].x) + sqr(chspr[i].y)));
       v1 := makevector((lengthv*cos(gamma)),(lengthv*sin(gamma)));

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


       chspr[i].v := addvectors(chspr[i].v,v1);
       chspr[i2].v := addvectors(chspr[i2].v,v2);
Ich schätze mal der Fehler liegt irgenwo bei sinus oder cosinus.
Angehängte Grafiken
Dateityp: bmp vector_170.bmp (31,1 KB, 26x 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
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#22

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 18:24
in welcher form liegen denn die winkel vor ? in Grad oder im Bogenmaß?
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

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

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 18:25
Das müsste Bogenmaß sein da afaik Delhpi ja alles in Bogenmaß ausrechnet.
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
Markus
(Gast)

n/a Beiträge
 
#24

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 18:40
Auf Basis dieser Simulation könnte man doch noch irgendwie Schwerkraft oder so einbauen, dass die Kugeln zum Beispiel vom Boden abprallen, oder wenn man 2 Kugel übereinander loslässt (das wäre dann aber schon komplizierter )
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

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

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 18:43
Genau das hab ich mir auch schon überlegt

Was auch interessant wäre wenn man Große und kleine Kugeln nimmt könnte man die Diffusion simulieren.
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
Markus
(Gast)

n/a Beiträge
 
#26

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 18:56
Wenn man eine solche Situation korekt ausrechnen könnte, wärs schon toll (siehe Bild)
Miniaturansicht angehängter Grafiken
bild_191.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

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

Re: Zusammenstoß von Kugeln

  Alt 29. Jun 2004, 19:00
Das sollte rein theoretisch später mit dem Programm möglich sein, beim dem Aufprall mit der schräge muss man ja "nur" die Regel Einfallwinkel gleich Ausfallwinkel beachten.
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
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, 16: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
xineohp

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

Re: Zusammenstoß von Kugeln

  Alt 30. Jun 2004, 16:52
moin,


ich glaube das das nicht stimmt:
alpha = Skalarprodukt von VerktorA und VektorB

Den Schnittwinkel zweier Graden (Vektoren) berechnet man mit:
cos(alpha) = Skalarprodukt(VektorA, VektorB) / Betrag(=Länge) von VektorA * Betrag von VektorB
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

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

Re: Zusammenstoß von Kugeln

  Alt 30. Jun 2004, 16:59
Ah ja dann hab ich da was falsch verstanden, nur leider is das nicht der einzige Fehler im Code.

Delphi-Quellcode:
       vbuf := makevector((chspr[i].x-chspr[i2].x),(chspr[i].y-chspr[i2].y) ) ;
       
       alpha := arccos(dotproduct(chspr[i].v,vbuf)/(magnitude(chspr[i].v)*magnitude(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 := arccos(dotproduct(chspr[i2].v,vbuf)/(magnitude(chspr[i2].v)*magnitude(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));
Geht leider immer noch nicht


Ich glaub ich steh grad irgendwie auf'm Schlauch...
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
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz