Autor Beitrag
olle
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 02.02.08 18:01 
Hallo,
als Facharbeit ist es meine Aufgabe, eine kleine möglichst reale Engine zu bauen. Das soll heißen, ein Objekt (Ball) kann durch einen Raum geworfen werden, und es wirken der Luftwiderstand und die SChwerkraft auf das Objekt ein.
Hat da vllt jemand eine Ahnung, wo ich da ein paar Informationen her bekomme. Wie ich also die Berechnungen durchführe etc.

Und wenn jemand ein solches Programm kennt, wäre es auch nett, es mir zu zeigen, damit ich mir das schon fertig angucken und meine Gedanken dazu machen kann (Ich meine nicht umbedingt den Quellcode. Das wäre ja ein bischen zu einfach.)

Vielen Dank schon einmal.
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Sa 02.02.08 18:20 
Hallo,

also die Gravitationskraft ist gegeben durch
Fg = G * m1 * m2 / r^2
wobei G die Gravitationskonstante ist mit G = 6.67*10^11 (die Einheit weiß ich grad nicht),
m1 und m2 die Massen der beteiligten Körper und r der Abstand der Schwerpunkte.

Für die Luftreibung würde ich (vereinfachend) mit der Stokes-Reibung rechnen (natürlich nur, wenn deine bewegten Körper nur Kugeln sind).
Damit ergibt sich folgende Reibungskraft:
Fr = 6 * pi * r * eta * v
mit r = Radius der Kugel, eta = Viskosität der Luft (ich glaube 17*10^-6 Pa*s, aber schau nochmal nach) und v = Geschwindigkeit der Kugel.

Weitere Informationen solltest du eigentlich per Google ganz gut finden, die Wikipedia gibt in der Richtung iirc auch einiges her.
Sonst frag halt nochmal nach. :wink:
olle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 02.02.08 19:01 
user profile iconnagel hat folgendes geschrieben:

also die Gravitationskraft ist gegeben durch
Fg = G * m1 * m2 / r^2
wobei G die Gravitationskonstante ist mit G = 6.67*10^11 (die Einheit weiß ich grad nicht),
m1 und m2 die Massen der beteiligten Körper und r der Abstand der Schwerpunkte.

Müsste die Konstante nicht 6,67*10^-11 sein ?? Was sind jetzt die beiden Massen?? Ok, klar, m1 wird wohl der Ball sein. Ist m2 dann der Boden ?? Was für eine Masse hat dieser?? Und was ist mit dem Abstand der beiden Scwerpunkte gemeint?? Bei m1 wird es wohl der Ballmittelpunkt sein, aber was bei dem Boden ??
Wenn du mir das beantworten könntest, verstehe ich das vllt ;) Danke
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Sa 02.02.08 19:22 
user profile iconolle hat folgendes geschrieben:

Müsste die Konstante nicht 6,67*10^-11 sein ??


Ja klar, Tippfehler :oops: .

user profile iconolle hat folgendes geschrieben:
Was sind jetzt die beiden Massen?? Ok, klar, m1 wird wohl der Ball sein. Ist m2 dann der Boden ?? Was für eine Masse hat dieser?? Und was ist mit dem Abstand der beiden Scwerpunkte gemeint?? Bei m1 wird es wohl der Ballmittelpunkt sein, aber was bei dem Boden ??

Die Formel, die ich dir gegeben habe, ist die allgemeine für die Gravitationskraft zwischen zwei Massen. Da du in deinem Fall vermutlich die Gravitation der Erde simulieren wirst, ist m2 die Masse der Erde (ich glaub irgendwas so um 6*10^24 kg, aber das sollte zu finden sein). Der Abstand wäre dann eben vom Erdmittelpunkt zum Mittelpunkt deines Balls (also ca. 6370 km). Aber mir ist grad aufgefallen, dass das eigentlich für diese Anwendung viel zu kompliziert ist, da du ja die Gravitationskraft nach der Formel berechen kannst, die du vermutlich aus der Schule kennst:
Fg = g * m
mit g Fallbeschleunigung ("Ortsfaktor") = 9,80665 m/s^2 und m Masse deines Balls.

Hab ich wohl mal wieder viel zu kompliziert gedacht :wink: .
icho2099
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 101
Erhaltene Danke: 12

WIN XP, WIN 7, WIN 10
Delphi 6 Prof, Delphi 2005, FPC
BeitragVerfasst: Sa 02.02.08 19:43 
@nagel
nö, finde ich nicht. Er hat ja nicht weiter beschrieben WO sich der Raum befindet,
durch den der Ball geworfen werden soll. Auf der Oberfläche unseres Planeten scheint ja naheliegend, war aber nicht explizit gesagt.
Und über die Masse des Balls selber war auch nichts weiter gesagt, könnte sich ja auch
um einen sehr schweren Ball handeln.

@olle
Die dritte Einflußgröße wäre die Anfangsgeschwindigkeit des Balls als Vektor, also
mit Angabe von Richtung und Geschwindigkeit.
Und man braucht noch eine Angabe über den Ort, an dem der Ball diese Anfangsgeschwindigkeit hat, wenn man seine Bahnkurve bestimmen will.

Zu jedem Zeitpunkt ab dem Startzeitpunkt (Abwurf) berechnet sich der Ort des Balls
dann aus dem Integral über die Geschwindigkeit.

Die Geschwindigkeit bestimmt sich aus dem Anfangswert, der Schwerebeschleunigung und der Luftreibung.

Der Anteil aus der Schwerebeschleunigung Vg := g * t (näherungsweise wenn g konstant ist)
Die Richtung von Vg zeigt immer Richtung Erdmittelpunkt.

Der Anteil aus der Luftreibung bestimmt sich aus der Gesamtgeschwindigkeit und dem
Reibwiderstand des Balls in der Luft. Die Richtung ist der momentanen Geschwindigkeit
immer exakt etgegen gerichtet.

So etwa würde ich das ansetzen.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 02.02.08 19:59 
Man sollte hier auch beachten, dass hier ein energetischer Ansatz am einfachsten zu Nutzen ist. Ferner muss man hier u.U. beachten, dass Du Differential-Gleichungen lösen musst, da die Luftreibung abhängig von der aktuellen Geschwindigkeit ist, die sich abhängig von der Zeit ändert.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 02.02.08 20:00 
Hi,

Willst du nur den Fall simulieren oder soll der Ball noch springen?^^
Wenn ja, brauchst du zusätzlich eine Kollisionsabfrage und eine Formel, die eine Elastische Verformung und die an den Boden abgegebene Bewegungsenergie mit reinnehmen...

Das fände ich ja dann die "Königsklasse"^^
Gut, wenn du wenig Zeit hast tuts ja eventuell auch eine Reduzierung der Geschwindigkeit um einen festen Faktor.

Kollisionsabfrage: Denke mal einfach Gerade und Kreis, wenn es eine komplexere "Landschaft" sein soll könntest du das auch machen, per Pixel...
(Oder halt Strecken und Kugel und mit vielen Strecken an die wirkliche Form annähern...)

Sry wenn ich ein bisschen ins blaue geraten habe und fast schon off topic bin, aber die Facharbeit eines Freundes sah so in etwa aus^^

mfG,
Daniel
olle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 02.02.08 20:18 
Ne Kollisionsabfrage habe ich drin. Also, die simpelste: Wände, links u. rechts; Decke; Boden

Ich wollte auch nur einen einfachen Faktor nehmen, um den die Geschwindigkeit verringert wird.

Über was war denn die Facharbeit ??

Edit: Wo ich auch noch Probleme habe ist die Frage, wie ich das Umsetze. Also, ich arbeite im Moment mit 2 Vektoren. Einmal die Position und einmal die geschwindikei. Jetzt habe ich einen Timer laufen (1ms) und jedes Mal wird der Ball um die Gescwhindigkeit, die im Vektor steht erhöht.

So kann man einen Ball natürlich gut zum Bewegen kriegen, aber sobald ich jetzt iwie was berechnen will (z.b. gravitation) wird es ja deutlich vereinfacht, wenn man mit t, also Zeit in Sekunden rechnet, ausgehend von der Startposition.

Das ist dann ja ein ganz anderer Ansatz. Wie kann ich das am Besten umsetzen ??

Das ist jetzt nur ein Gedanke, den ich im Laufe des Threads entwickelt habe, darum habe ich mir noch keine direkten Gedanken über die Umsetzung gemacht.


Zuletzt bearbeitet von olle am Sa 02.02.08 20:24, insgesamt 1-mal bearbeitet
Leuchtturm
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Sa 02.02.08 20:21 

_________________
Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
olle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 02.02.08 20:26 
ist das schlimm ?? ^^ Ich wollte jetzt mal testen, welches Forum aktiver und qualitativ besser ist.
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Sa 02.02.08 20:28 
Nicht wirklich, aber du solltest selbst darauf hinweisen.
Leuchtturm
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Sa 02.02.08 20:29 
user profile iconolle hat folgendes geschrieben:
ist das schlimm ?? ^^ Ich wollte jetzt mal testen, welches Forum aktiver und qualitativ besser ist.


Naja, wenn du es angibst ist es nicht so schlimm, aber da sowieso viele Mitglieder in beiden Foren angemeldet sind, oder zumindest in beiden foren lesen, wissen es die meisten sowieso :wink:

So jetzt wieder B2T

_________________
Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Sa 02.02.08 20:49 
Also wenn Du etwas tiefer einsteigen willst, dann kannst Du dir folgende Vorlesungsfolien mal anschauen, da gehts um die physikalisch korrekte Simulation
von Objekten im dreidimensionalen.

Es wird immer von einem Zeitpunkt t die Position und Geschwindigkeit des nächsten Zeitschrittes berechnet.

Hier ist eineEinführung in Partikelsysteme und die Differential
gleichungsansätze dazu.
Was dich besonders interessieren dürfte, sind die Masspoint-Systems.
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Sa 02.02.08 21:43 
Noch ein paar Kommentare:


Wenn das eine Physik-FA wird, solltest du Sachen wie
user profile iconolle hat folgendes geschrieben:

Ich wollte auch nur einen einfachen Faktor nehmen, um den die Geschwindigkeit verringert wird.

vermeiden und lieber vernünftige, physikalisch begründbare Formeln verwenden, auch wenn das Ergebnis das selbe ist.


Timer mit 1 ms zu verwenden ist auch nicht sinnvoll, da der Windows-Timer so kurze Intervalle in der Realität nicht schafft. Zu diesem Thema siehe dieser Thread, die Hauptaussage ist folgende:
user profile iconGausi hat folgendes geschrieben:

Mit dem normalen Timer kommt man nicht unter 50-25ms.



user profile iconolle hat folgendes geschrieben:

So kann man einen Ball natürlich gut zum Bewegen kriegen, aber sobald ich jetzt iwie was berechnen will (z.b. gravitation) wird es ja deutlich vereinfacht, wenn man mit t, also Zeit in Sekunden rechnet, ausgehend von der Startposition.

Zur Berechnung der Gravitation brauchst du sicher keine Informationen über die Zeit. Natürlich ist es aber trotzdem sinnvoll, erstmal alle Berechnungen in physikalischen Einheiten durchzuführen und erst zum Schluss umzurechnen, also z. B. die Komponenten deines Ortsvektors nicht in Pixel, sondern in Meter speichern.


Und nochwas: Ich vermute mal, dass du bei deiner FA auch Quellen angeben musst. Wenn du da nur angeben kannst "Mitglieder von DF, Mitglieder von DP, Wikipedia" macht das vermutlich keinen allzu guten Eindruck :wink: , also wärs durchaus sinnvoll, wenn du dir noch ein paar zitierfähige Bücher suchst.
olle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 02.02.08 22:55 
Ja, ich wollte das alles nochma neu schrieben und mir das vernünftig mit den Einheiten, also Meter und so überlegen. Ich hatte ersucht es nachträglich einzubauen, aber da passen son paar sachen iwie nicht^^

@ nagel ... ich habe mit meinem Leher abgemacht, dass ich nur das Programm schrieben muss, also keinen 12 Seiten langen Text schreiben. Demnach brauche ich auch keine Quellenangaben ;) Ich fand den Deal ziemlich gut^^
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 03.02.08 09:48 
user profile iconolle hat folgendes geschrieben:

@ nagel ... ich habe mit meinem Leher abgemacht, dass ich nur das Programm schrieben muss, also keinen 12 Seiten langen Text schreiben. Demnach brauche ich auch keine Quellenangaben ;) Ich fand den Deal ziemlich gut^^

omg, ist das.. sagen wir mal hört sich nach einem echt netten Lehrer an :D
Dann solltest du aber auf gute Kommentare mittels //,{},(**) achten - aber das weißt du ja wahrscheinlich schon^^

user profile iconnagel hat folgendes geschrieben:

Wenn das eine Physik-FA wird, solltest du Sachen wie
user profile iconolle hat folgendes geschrieben:

Ich wollte auch nur einen einfachen Faktor nehmen, um den die Geschwindigkeit verringert wird.

vermeiden und lieber vernünftige, physikalisch begründbare Formeln verwenden, auch wenn das Ergebnis das selbe ist.

Ich denke es ist auch okay, den resultierenden Faktor zu nehmen und die Formel in Kommentaren danebenzuschreiben(evntl. mit Lösung per *,*²,*³... weiter unten/oben).
Warum sollte das Programm das jedes Mal berechnen, wenn der Wert konstant ist?^^

In deine Formel zur Geschwindigkeitsreduzierund bei der Wand sollte aus jeden Fall der Winkel zur Wand rein, denke ich.(Winkel :arrow: Geschwindigkeitsvektor)
Eventuell findest du da auch zitierbare Quellen dafür.(Ich würde trotzdem seriöse Quellen in Kommentaren angeben, sieht einfach besser aus :wink: , esseidenn bei einfachen Sachen, wenn du überall Quellen stehen hast sieht das so aus, als könntest du nicht rechnen :? )

user profile iconolle hat folgendes geschrieben:

Über was war denn die Facharbeit ??

Naja, im prinzip das selbe, nur sind die Objekte auch gegenseitig voneinander abgeprallt.

user profile iconolle hat folgendes geschrieben:

Edit: Wo ich auch noch Probleme habe ist die Frage, wie ich das Umsetze. Also, ich arbeite im Moment mit 2 Vektoren. Einmal die Position und einmal die geschwindikei. Jetzt habe ich einen Timer laufen (1ms) und jedes Mal wird der Ball um die Gescwhindigkeit, die im Vektor steht erhöht.

So kann man einen Ball natürlich gut zum Bewegen kriegen, aber sobald ich jetzt iwie was berechnen will (z.b. gravitation) wird es ja deutlich vereinfacht, wenn man mit t, also Zeit in Sekunden rechnet, ausgehend von der Startposition.

Das ist dann ja ein ganz anderer Ansatz. Wie kann ich das am Besten umsetzen ??

Nö, wenn ich richtig verstehe wovon du redest("Das"), im Prinzip nein.
"Die Geschwindigkeit, die im Vektor steht" wäre dann a*t, wobei t hier dein Rechenintervall von (früher) 1ms ist.
(a = v / t) :arrow: (a * t = v)

Bis wann hast du denn noch Zeit :?:
mfG,
Daniel
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 03.02.08 10:26 
ich hab da jetzt nich alles durchgelesen, aber meine Gravitations-Facharbeit ist erst vor kurzem fertig geworden XD

Also:
da der Ball sehr sehr viel leichter ist als die Erde kannst du g benutzen. g ist die Erdbeschleunigung. g=G*Merde/r² (feste Konstante für Erdoberfläche)

In v=a*t ist a=g. Also v=g*t. Diese Geschwindigkeit wirkt zu 100% in y-Richtung. t ist dabei z.B. das Interval deines Timers. Somit kannst du Rechnen:
v.x:=v.x (unveränderlich)
v.y:=v.y-v (das v von oben abziehen)

Soviel zur Gravitation.

wenn der Ball jetzt den Boden berührt, dann ist
v.x=v.x;
v.y:=-v.y;

und an der Wand
v.x:=-v.x;
v.y:=v.y;

damit müsste der ball schon fröhlich über den Bildschirm hoppeln;

user profile iconolle hat folgendes geschrieben:

@ nagel ... ich habe mit meinem Leher abgemacht, dass ich nur das Programm schrieben muss, also keinen 12 Seiten langen Text schreiben. Demnach brauche ich auch keine Quellenangaben ;) Ich fand den Deal ziemlich gut^^

Diesen Deal hätte ich auch raushandeln können, er ist aber ziemlich schwachsinnig da du für ein gutes Programm ohnehin viel nachschlagen musst...12 Seiten sind dann schnell getippt. Und als Lehrer würde ich Quellen für das Programm verlangen + Erklärung vom Code

und nen Kumpel von mir hat 30 Seiten Handbuch geschrieben XD Dazu hatte ich aber dann keine Lust/Zeit mehr

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 03.02.08 11:49 
Wenn man keinen Text schreibt, was hat das dann noch mit einer Facharbeit zu tun ? Darum geht es ja eigentlich gerade.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 03.02.08 11:50 
da hast du eigentlich recht, jup

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
olle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 03.02.08 12:27 
ja ich weiß, aber mich haben die normalen Themen einer Facharbeit, also z.B. Internet, Verschlüsselungen etc, nicht interessiert. Wollt dann erst über DelphiX schreiben, aber dies T6hema ist ungeeignet. Irgendwann kam ich dann zu ner Engine.
Mein Gedanke war nur, dass ich es nicht einsehe, dass manche einfach 12 Seiten über das Internet schrieben müssen, ich aber eine Engine entwickeln muss (was einzeln genommen schon aufwendiger ist) und zusätzlich noch 12 Seiten zu schreiben.
Meine Frage war eig nur gewesen, ob ich die Seitenzahl dann reduzieren könnte.

Mein Lehrer meinte dann nur, es würde ausreichen, wenn ich mein Programm hinreichend erkläre. Da woltle ich nicht wiedersprechen.

@Xion:

Danke, du hast das nochmal schon zusammenfassend erläutert. Das mit dem Abprallen hatte ich schon, aber ich werde mich jetzt mal an die Gravitation machen. Ich war immer Auf der Suche, das ohne Zeitintervall zu berechnen. Aber jetzt werde ich es so machen, dass ich immer die Zeit errechne, die ich für die Procedure "move" und "show" brauche. So habe ich dann keine Abweichung mehr, sondern eine exakte Zeitangabe.

Allmählich blicke ich durch ;)