Kreis Kollision
Übersicht

![]() |
beanage.johannesBetreff: Kreis Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo habe mal ne frage bezüglich der kollision von einem kreis.
habe schon gesucht aber nicht wirklich was passendes gefunden. wie kontrolliere ich ob ein kreis mit etwas kollidiert? iwas mit radius sicher. weis halt nur nicht wie. danke |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Logik.
Ein Kreis hat einen Mittelpunkt und einen Radius. Ein Punkt kollidiert also genau dann mit dem Kreis, wenn er genauso weit vom Mittelpunkt entfernt ist (oder näher), als der Radius groß ist. Zwei Kreise Kollidieren genau dann, wenn die Entfernung der Mittelpunkte gleich oder kleiner der Summe der Radien der Kreise ist... Ich empfehle im Übrigen immer Skizzen zu machen. Das Problem aufzuschreiben bzw. zu skizzieren macht es für einen selbst anschaulicher. |
||
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) |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry aber dafür bin ich zu blöd... könnte jemand bitte einen kleinen sample code schreiben damit ich das iwie kappiere danke. | ||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Überleg selbst und eigne dir Wissen an das du ohnehin brauchst, es ist besser so als sich immer Codeschnippel vorlegen zu lassen!
MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst nur schauen ob der Kreismittelpunkt kleiner Radius vom Punkt der Prüfung wegliegt. Die Entfernung berechnest Du mit dem Pythagoras. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok ... wie zieht man wurzeln mit BMax ? hab grade vergessen... doch nen code schnippsel hilft mir einfach es zu kappieren ![]() EDIT ok habe schon... sqr das problem ist wie berechne ich m? (aua) aber das kannst net wirklich sein oder:?? Code: [AUSKLAPPEN] Type TKreis Field x% Field y% Field r% Field m% Method draw() DrawOval x,y,r*2,r*2 m = x+r EndMethod EndType Global kreis1:TKreis = New TKreis kreis1.x = 200 kreis1.y = 200 kreis1.r = 100 Global kreis2:TKreis = New TKreis kreis2.x = 0 kreis2.y = 0 kreis2.r = 100 Graphics 800,600 Repeat Cls kreis1.Draw() kreis2.Draw() kreis1.x = MouseX() kreis1.y = MouseY() abstand:Int = Sqr((kreis1.y-kreis2.y)^2+(kreis1.x-kreis2.x)^2) If kreis1.m-kreis1.r < abstand Then Print "collision" Print "A"+abstand Print kreis1.x-kreis2.x Print kreis1.y-kreis2.y Print "M-R" +Int(kreis1.m - kreis1.r) Flip Until AppTerminate() |
||
- Zuletzt bearbeitet von beanage.johannes am Fr, Jul 17, 2009 0:38, insgesamt einmal bearbeitet
![]() |
kriD |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie wärs denn einfach die x und y position des kreises als mittelpunkt zu nehmen?
(denn kannst du dir zB das field: m sparen.) lg kriD |
||
Wenn ich du wäre, wäre ich lieber ich! |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok hmm gute idee... trozdem stimmt was mit meinem code nicht richtig *heul*
Code: [AUSKLAPPEN] Type TKreis
Field x% Field y% Field r% Method draw() DrawOval x-r,y-r,r*2,r*2 EndMethod EndType Global kreis1:TKreis = New TKreis kreis1.x = 0 kreis1.y = 0 kreis1.r = 100 Global kreis2:TKreis = New TKreis kreis2.x = 0 kreis2.y = 0 kreis2.r = 100 Graphics 800,600 Repeat Cls kreis1.Draw() kreis2.Draw() kreis1.x = MouseX() kreis1.y = MouseY() abstand:Int = Sqr((kreis1.y-kreis2.y)^2+(kreis1.x-kreis2.x)^2) If (kreis1.x-kreis1.r) < abstand And( kreis1.y-kreis1.r) < abstand Then Print "collision" Print "Abstand: "+abstand Flip Until AppTerminate() es sagt es würde immer collidieren... weis echt nicht woran das liegt glaube ich mache beim rüfen kreis1.x-kreis1.r... was falsch |
||
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin
Ich kanns zwar nicht testen, da ich kein BlitzMax habe, aber so müsste es gehen: Code: [AUSKLAPPEN] If (kreis1.r+kreis1.r) > abstand Then Print "collision"
Zwei kollidierende Kreise haben einen kleinereren Abstand als die Summe der Radien. mfg |
||
1 ist ungefähr 3 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich könnte es zwar testen, da ich BlitzMax habe, tu ich aber nicht. Aber so müsste es gehen:
Code: [AUSKLAPPEN] If (kreis1.r+kreis2.r) > abstand Then Print "collision"
Wär dir wahrscheinlich nichtmal aufgefallen, solange kreis1 und kreis2 gleiche Radien haben ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, passt, das geht ![]() btw nimm wenigstens floats wenn du Berechnungen durchführst, dann hast du es genauer. MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
vieen vielen dank :9 bin nicht drauf gekommen... ich hhorst^^ dabei ist des ja so logisch *grins* bin auch müde und in der schule hatten wir sowas noch garnicht^^
vieeelen dank ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group