AGB  ·  Datenschutz  ·  Impressum  







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

Ballprogramm / Gassimulierung

Ein Thema von sana1666 · begonnen am 11. Okt 2007 · letzter Beitrag vom 11. Okt 2007
Antwort Antwort
sana1666

Registriert seit: 11. Okt 2007
Ort: Borken
1 Beiträge
 
#1

Ballprogramm / Gassimulierung

  Alt 11. Okt 2007, 14:44
Hallo zusammen

Unserem Physik-Informatikkurs wurde ein Programm gegeben,dass die Gasmoleküle darstellen soll, das folgend aufgebaut ist:
Beim Öffnen des Programmes hüpfen 40 Bälle durch das Feld.
Die Bälle haben alle die gleiche Geschwindigkeit.
Wird ein Ball von einem oder mehreren anderen Bällen,wird der Ball in eine andere Richtung gestoßen,je nach dem von wo dieser angesoßen wurde.
Alle Bälle stoßen vom Programmfenster ab (einfallswinkel=ausfallswinkel)

Unsere Aufgabe soll es nun sein diesen Ausschnitt..:

procedure Stoss;
var h,d,dx,dy: single; i,j: integer;
begin
for i := 1 to max-1 do
for j := i+1 to max do
begin
d := sqrt(sqr(Ball[i].x-Ball[j].x)+sqr(ball[i].y-ball[j].y));
if d <= Ball[i].r+Ball[j].r
then begin
h := Ball[i].vx; Ball[i].vx := Ball[j].vx;
Ball[j].vx := h;
h := Ball[i].vy; Ball[i].vy := Ball[j].vy;
Ball[j].vy := h;
if d < Ball[i].r+Ball[j].r then
begin
dx := (Ball[i].x-Ball[j].x)*(Ball[i].r+Ball[j].r-d)/(Ball[i].r+Ball[j].r);
dy := (Ball[i].y-Ball[j].y)*(Ball[i].r+Ball[j].r-d)/(Ball[i].r+Ball[j].r);
Ball[i].x:= Ball[i].x+dx;
Ball[i].y:=Ball[i].y+dy;
end

end

end
end;


...und diesen Ausschnitt des Programms zuerklären:

Ball[1].ZeigeDich;
for i := 2 to max do
begin
repeat
neu := true;
x := Random(Spielfeld.Bild.Width-100) + 25;
y := Random(Spielfeld.Bild.Height-50) + 25;
for j := 1 to i-1 do
if sqrt(sqr(x-Ball[j].x)+sqr(y-Ball[j].y)) <= 42
then neu := false;
until neu;


Ich hoffe mir kann dabei jemand helfen!
Danke schon mal im vorraus
Sana
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Ballprogramm / Gassimulierung

  Alt 11. Okt 2007, 15:00
Nachdem dies hier kein Hausaufgabenforum ist, sollte dir fairerweise keiner die Lösung senden,

aber es ist eigentlich ganz einfach.

Zerleg die Prozeduren ganz einfich in Worten zwischen dem Begin und end, die var sind Platzhalter.

Hier noch als Hilfe die erste Zeile

setze in i die Zahlen von 1 bis max-1 ein und mache //ähm so etwas, vieleicht ist es dir dann leichter verständlich. Spezielle Befehle hab ich nich entdeckt. sqr = Quadrat (Square) und sqrt = Quadratwurzel(Squareroot)

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Ballprogramm / Gassimulierung

  Alt 11. Okt 2007, 15:04
Die Zeile d := sqrt(sqr(Ball[i].x-Ball[j].x)+sqr(ball[i].y-ball[j].y)); sieht mir sehr nach Pythagoras aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Ballprogramm / Gassimulierung

  Alt 11. Okt 2007, 15:22
Zitat von sana1666:
d := sqrt(sqr(Ball[i].x-Ball[j].x)+sqr(ball[i].y-ball[j].y));
und damit soll wohl irgendetwas berechnet werden
was braucht man um die kollision von zwei bällen zu prüfen?
richig die entfernung! und das geschieht hier!
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:25 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