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:

Gravity und abprall mit cos und sin berechnen?

 
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: 27.04.2012, 08:30    Titel: Gravity und abprall mit cos und sin berechnen? Antworten mit Zitat

Hallo Leute habe mal wieder eine Frage und zwar.

Wollte ich sowas in der Art umsetzen:



Das mit dem Abschusswinkel und Gravity ist kein Problem nur wie berechne ich es wenn das Objekt auf den boden aufschlägt zb objekt > ground?

das es dann wie in meiner gezeigten Grafik sich verhält?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.04.2012, 09:23    Titel: Antworten mit Zitat

Sicher nicht mit Sinus und Cosinus. Das kann man ganz allgemein mit einem Beschleunigungsvektor definieren.

Code:


Dim As Single x = startpositionX, y = startpositionY, dx = startbeschleunigungX, dy = startbeschleunigungY

... Bewegungsschleife...

x += dx ' horizontale beschleunigung
y += dy 'vertikale beschleunigung

dy -= gravitation 'gravitation wäre z.B. 9.81 wenn man hier in physikalisch korrektem Maßstab arbeiten möchte, man kann aber auch einfach Werte nehmen, die "gut aussehen" - vor allem, da man sich sonst noch über ein passendes Aktualisierungsintervall Gedanken machen müsste und die Koordinaten generell sehr schnell wachsen würden.

If(objekt trifft boden) Then 'z.B. y-Koordinate <= 0
  dy = (-dy / 10) ' Vertikale Beschleunigung umdrehen und um willkürlich gewählten Faktor 10 (oder beliebigen anderen Wert) abschwächen
  dx /= 2 'Horizontale Beschleunigung um willkürlich gewählten Faktor 2 abschwächen.
End If


_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 28.04.2012, 15:02    Titel: Antworten mit Zitat

Code:
ScreenRes 320,240,32
WindowTitle("Physik Test")

Dim draw_screen As UByte Ptr = ImageCreate(320,240,32)

Dim ground As Integer= 200

Dim x As Double = 10
Dim y As Double = ground -2

Dim mx As Double = 0.2
Dim my As Double = 1.5
Dim gravity As Double = 0.01

Randomize timer

Do
   
   Line draw_screen, (0,0)-(320,240),0,bf
   
   Draw String draw_screen,(0,0),Str(my)
   
   x += mx
   y -= my
   
   my -=gravity
   
   If y >= ground Then
      
      my = (-my/2)

      
   EndIf
   
   
   Circle draw_screen,(x,y),1,RGB(0,0,255)
   Line draw_screen,(0,ground)-(320,ground),RGB(255,0,0)
   
   
   ScreenLock
   Cls
   Put(0,0),draw_screen
   ScreenUnLock
   
   Sleep 10
Loop Until InKey="q"
ImageDestroy draw_screen
End





Soweit bin ich schon.. Problem ist das mit der abschwächung man könnte es gut mit ner subtraktion machen aber das dann nciht so realistisch.
und /10 würde auch nicht viel bringen da der wert dann auf unter 0 sich senken würde
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 28.04.2012, 15:30    Titel: Antworten mit Zitat

Warum sollte ein positiver Wert bei einer Division durch 10 auf einen Wert unter 0 sinken? verwundert

Dein Problem ist ein anderes: Wenn sich der Ball unterhalb des Bodens befindet, drehst du seine y-Richtung um. Wenn er es dann aber im nächsten Schritt nicht bis über den Boden schafft, drehst du wieder um und er fällt wieder nach unten. Lösung: Drehe die y-Richtung nur dann um, wenn sich der Ball unterhalb des Bodens befindet und sich gerade nach unten bewegt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
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