Kollision zwischen 2 Kreisen
Übersicht

![]() |
tedyBetreff: Kollision zwischen 2 Kreisen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
tedy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich brauch ich nur eine einfache Eintritts-Winkel = Austritts Winkel FUnktion
Nicht 100% Physikalisch genaue angaben |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
tedy |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group