Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Particle Engine coden?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 17.12.2011, 16:17    Titel: Particle Engine coden? Antworten mit Zitat

Hi Leute,
ich hab da mal eine Frage an euch.

Ich wollte mir ein kleines Particle System schreiben und weiss jetzt nicht genau wo ich anfangen soll.

Gibt es irgentwelche guten Tuts dazu oder hat jemand vielleicht ein paar Denkanstösse für mich?

Gruss FBFreak.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 17.12.2011, 16:34    Titel: Antworten mit Zitat

es gibt sicher tuts zu partikelsystemen allgemein mit ganz viel mathe drin, oder vielleicht sogar in verschiedenen modernen programmiersprachen (c/java, evtl matlab). Aber vermutlich nichts direkt in Freebasic. Was ist denn dein Kenntnisstand? was suchst du? Kannst du FB schon, kannst du opengl oder irgendeine andere art von 3d grafik schon, kannst du mathe schon, weißt du schon was über dynamische simulation?

tust du das nur um mal sowas entwickelt zu haben um zu wissen wie das so ist? dann könntest du vermutlich die einfachere variante einer simulation in 2D versuchen. Oder möchtest du gezielt das ganze in 3D machen?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 17.12.2011, 18:49    Titel: Antworten mit Zitat

Also FB ist kein Problem ,Mathe auch nicht. Ich wollte es ja nicht direkt in 3D machen sondern eine 2D Simulation. Wollte mir das mal aus Informations-Testzwecken programmieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 17.12.2011, 23:29    Titel: Antworten mit Zitat

naja 2d partikelengine ist jetzt nicht so das wunderwerk, das kriegt man ausm kopf zusammen. Du hast hauptsächlich 2 Entitäten:

Partikel bestehend aus position x,y und geschwindigkeiten vx,vy, verbleibende Lebensdauer t (kann man zB als Halbwertszeit modelieren oder als einfache deadline) und dann noch spaßfunktionen die dir Farbe oder Sprite, möglicherweise in abhängigkeit der anderen Parameter, berechnen. Aber der Anfang ist sicher am einfachsten wenn du einfach mit bildschirmkoordinaten mit geschwindigkeiten in "pixel pro sekunde" rechnest und einfach jeden partikel als weißen pixel an der entsprechenden stelle auf den bildschirm malst.

Emitter bestehend aus position x,y, erzeugungsrate, initiale lebensdauer, richtung phi und geschwindigkeit v, je nach dem wie detailiert du das machst noch stochastische verteilungen für jeden die parameter (zB den winkel um bis zu +-10° verdrehen und die initiale lebensdauer verkürzen je mehr der winkel abweicht gibt dir so ne art raketen-düse)

die welt kannst du dir dann überlegen ob du sie mit einfach gravitation "im bildschirm nach unten" machst, oder zirkulär "gravitation zur bildschirmmitte", oder mehrere gravitationszentren. Letztendlich irgendeine funktion g die dir an der position (x,y) beschleunigungen in x- und y-richtung gibt. (das ist natürlich nicht wirklich gravitation wenn man ohne massen rechnet, aber der effekt ist reichlich ähnlich. Man sollte es vermutlich eher wind oder sowas nennen)

und die Simulation besteht dann letztendlich aus ner liste der emitter, ggf durch user-input beeinflussbar und ner liste aus grade existierenden partikeln. Die hauptschleife schaut dann einfach aus welchen emittern wie viele neue partikel in der verganenen zeit dt seit der letzten schleifenausführung entstanden sind, schaut bei den partikeln welche "gestorben" sind. Und dann stellst du dir eben ne Differentialgleichung für die bewegung auf, sowas in der richtung
x_neu := x_alt + vx_alt*dt + 0.5*ax(x_alt,y_alt)*dt*dt
y_neu := y_alt + vy_alt*dt + 0.5*ay(x_alt,y_alt)*dt*dt
vx_neu := vx_alt + ax(x_alt,y_alt)*dt*dt
vy_neu := vy_alt + ay(x_alt,y_alt)*dt*dt
(und für die lebensdauer halt noch t_neu := t_alt - dt oder +dt je nach dem wie du damit rechnen willst)
mal als primitivste Integration nach dem Euler-Verfahren mit bewegungsgleichungen basierend auf Newtonscher Mechanik. Das wertest du dann in jedem schleifendurchlauf aus für alle partikel und schon fliegen die teile übern bildschirm.

Damit das ganze dann nicht so langweilig nur zum anschauen ist wirst du vermutlich die Emitter-parameter wie position und richtung irgendwie durch nutzer steuerbar machen, dass man zB eine mit der maus drehbare und der tastatur verschiebbare raketendüse bekommt.

Dann kannst du wenn du willst anfangen dir feuerwerke zu bauen, indem partikel selbst emitter sein könn, oder du kannst weitere normale phsyikalische effekte einbauen wie partikeln ladung verpassen und dann kräfte zwischen partikeln (achtung, laufzeitkomplexität) einzuführen oder mit magneten zusätzlich zu der gravitation die bewegungen ortsabhängig beeinflussen zu können, oder du kannst dich in numerische integration einlesen und genauere verfahren als das oben erwähnte euler-verfahren einbauen, oder oder oder. Viel zur Auswahl zwinkern

Fußnote: Warum gibts hier eigentlich keinen TeX support? JSMath oder sowas wär echt praktisch manchmal..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schildron



Anmeldungsdatum: 25.08.2008
Beiträge: 86

BeitragVerfasst am: 18.12.2011, 00:58    Titel: Antworten mit Zitat

Demo Beispiel meines Partikelsystems:

http://www.freebasic-portal.de/code-beispiele/grafik-und-fonts/sich-regulierendes-partikelsystem-192.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 18.12.2011, 12:14    Titel: Antworten mit Zitat

Hier hast auch ein Partikelsystem aus einer Simulation von mir.

Habs mit etwas Beschreibung gefüllt.
http://www.freebasic-portal.de/porticula/betaspot-bas-1462.html

Ich nutze jedoch ein anderes Berechnungsmodel als schildron.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 18.12.2011, 20:46    Titel: Antworten mit Zitat

Thx an euch werd mir das mal genauer anschauen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz