  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		0oFreako0
 
 
  Anmeldungsdatum: 17.12.2011 Beiträge: 114
 
  | 
		
			
				 Verfasst am: 27.04.2012, 07:30    Titel: Gravity und abprall mit cos und sin berechnen? | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		Jojo alter Rang
  
  Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
  | 
		
			
				 Verfasst am: 27.04.2012, 08:23    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		0oFreako0
 
 
  Anmeldungsdatum: 17.12.2011 Beiträge: 114
 
  | 
		
			
				 Verfasst am: 28.04.2012, 14:02    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 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 | 
		 | 
	 
	
		  | 
	 
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 28.04.2012, 14:30    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Warum sollte ein positiver Wert bei einer Division durch 10 auf einen Wert unter 0 sinken?  
 
 
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 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
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.
  | 
   
 
     |