Kollision zwischen 2 Kreisen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

tedy

Betreff: Kollision zwischen 2 Kreisen

BeitragMo, Nov 24, 2008 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich wollte einen kleinen Sandkasten programmieren wo bälle zusammeprallen können und auch apprallen.
Ich bin schon soweit das ich die Kollision der kreise feststelle und weis jetzt nicht mehr weiter

hier mein Code
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
grav#=0.1
Type ball
 Field id
 Field x#,y#
 Field sx#,sy#
 Field rad#
End Type

For i=0 To 9
b.ball=New ball
b\id=i
b\x#=Rand(0,500)
b\y#=Rand(0,500)
b\rad#=10
Next

t=CreateTimer(60)
While Not KeyHit(1)
Cls

For b.ball=Each ball
 Plot b\x#+b\rad#,b\y#+b\rad#
 Oval b\x#,b\y#, b\rad#*2,b\rad#*2,0
 b\x#=b\x#+b\sx#
 b\y#=b\y#+b\sy#
 b\sx#=b\sx#
 b\sy#=b\sy#+grav#

 If b\y>=GraphicsHeight()-b\rad#*2 Then b\y=GraphicsHeight()-b\rad#*2:b\sy=0

 For b1.ball=Each ball
d=Sqr(((b1\x#+b1\rad#)-(b\x#+b\rad#))*((b1\x#+b1\rad#)-(b\x#+b\rad#))+((b1\y#+b1\rad#)-(b\y#+b\rad#))*((b1\y#+b1\rad#)-(b\y#+b\rad#)))
   

  If d<20 And b\id<>b1\id

d=Sqr(((b1\x#+b1\rad#)-(b\x#+b\rad#))*((b1\x#+b1\rad#)-(b\x#+b\rad#))+((b1\y#+b1\rad#)-(b\y#+b\rad#))*((b1\y#+b1\rad#)-(b\y#+b\rad#)))
   
    alpha = ASin(Abs(b\x-b1\x)/d)

   
  EndIf


 Next
Next




WaitTimer(t)
Flip
Wend


Wie komm ich jetzt vom winkel alpha zu den Apprall x,y speed ?

TeDy

Xeres

Moderator

BeitragMo, Nov 24, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Allgemeinen ist grad ein Thema dazu...
https://www.blitzforum.de/foru...hp?t=29974

Kommt drauf an, ob du es physikalisch Korrekt oder zufällig haben magst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

tedy

BeitragMo, Nov 24, 2008 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich brauch ich nur eine einfache Eintritts-Winkel = Austritts Winkel FUnktion
Nicht 100% Physikalisch genaue angaben

Xeres

Moderator

BeitragMo, Nov 24, 2008 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local Treff_winkel = Winkel_2D#(k\X, k\Y, k2\X, k2\Y)            
k\w = Treff_winkel
k2\w = -Treff_winkel

[...]

Function Winkel_2D#(x1#, y1#, x2#, y2#)
   Return (ATan2(y1 - y2, x1 - x2) + 270) Mod 360
End Function


Ich probier grad selber rum; doof sind noch Kreise/Kugeln die sich länger überlappen...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

tedy

BeitragMo, Nov 24, 2008 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja das ist eigentlich nicht das Problem.
Ich könnte dann ja bei der Erstellung der Kreise auf kollision prüfen und sofort löschen

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group