Thread Berechnen der Flugbahn an Extremstellen: Problem bei (grafischen) Simulationen
(11 answers)
Opened by Thorium at 2006-02-09 15:29
ich habe ja auch nie gesagt, dass du bei jeder pixelbewegung den frame neu zeichnen sollst, aber wenn du genauer rechnen willst, musst du gezwungenermassen mehr zwischenwerte berechnen.
ich bin nicht der grosse mathecrack, aber ich glaube nicht, dass es die eine formel gibt, in die du alle variablen einträgst, die dir dann die genauen positionen nach einer gewissen zeit ausgibt. da sich alle massen gegenseitig beeinflussen, kann man sich da nur annähern, indem man die berechneten zeiträume kleiner macht. folgende idee: nimm den momentan schnellsten körper, den du in deinem system hast und berechne, wie lange es dauert, bis er eine gewisse strecke zurückgelegt hat. der betrag dieser strecke ist gewissermaßen die genauigkeit deiner berechnung. jetzt lass sich alle körper entlang ihres momentanen bewegungsvektors diese entsprechende zeit lang bewegen (hier müsste man jetzt auch noch eine kollisionsabfrage implementieren). nachdem sich alle körper bewegt haben, addierst du zum bewegungsvektor jedes körpers die entsprechenden beschleunigungen die sich aus der masse der umliegenden körper für die verstrichene zeit ergeben. danach fängst du mit dem spass wieder von vorne an. erst wenn die zeit eines frames verstrichen ist (z.b. 1/60 sec), zeichnest du einen neuen frame. das könnte man jetzt noch dadurch verfeinern, dass die zu berechnende zeit niemals die zeit bis zum nächsten frame überschreiten darf (damit deine framerate erhalten bleibt, auch wenn sich alles besonders langsam bewegt). das "echtzeitproblem" ist unter spieleprogrammierern weit verbreitet. evtl. solltest du dich mal duch entsprechende websites (z.b. http://www.gamedev.net/)wühlen.\n\n <!--EDIT|Taulmarill|1139502130--> $_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0 F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B |