Box-To-Box Kollision

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

ChristianK

Betreff: Box-To-Box Kollision

BeitragMi, Nov 22, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennt ihr eine Lib, die Box-To-Box Kollision unterstützt.
Wenns geht, kostenlos! Smile

BladeRunner

Moderator

BeitragMi, Nov 22, 2006 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Anfragen in dlls und Userlibs.
Noch dazu sollte eine Box zu Box Kolli flott und effizient ohne jede dll machbar sein.
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

TheMatrix

BeitragMi, Nov 22, 2006 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Öhm, weißt du eigentlich was Blitzbasic genau macht und kann? Oder wolltest du uns nur testen ? Wink

Hier mal n Code:
Code: [AUSKLAPPEN]

Graphics 640,480,16,2

box1 = CreateImage(100,100) : SetBuffer ImageBuffer(box1) : ClsColor 255,0,0 : Cls
box2 = CreateImage(100,100) : SetBuffer ImageBuffer(box2) : ClsColor 0,0,255 : Cls
ClsColor 0,0,0
SetBuffer BackBuffer()

While Not KeyHit(1)
 Cls
  mx = MouseX() : my = MouseY()
  msx = MouseXSpeed() : msy = MouseYSpeed()
 
  bx2 = 200 : by2 = 200
  If ImagesCollide(box1,mx,my,0,box2,bx2,by2,0)
   Color 255,0,0 : Text 0,0,"KOLLISION!!!"
  End If
  DrawImage box1,mx,my
  DrawImage box2,bx2,by2
 Flip
Wend


Und lern erst mal kennen was Blitzbasic überhaupt ist Wink
°_° °.° °~° °v° .. -.-

Holzchopf

Meisterpacker

BeitragMi, Nov 22, 2006 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Er meinte wohl 3D. Aber da frag ich mich grad, wie es andere geschafft haben, ohne auszukommen, respektive wofür man die überhaupt einsetzen sollte.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Goodjee

BeitragMi, Nov 22, 2006 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
man muss ja nur checken, ob 4 punkte in einem bestimmten quader liegen...das soll wohl machbar sein*g*
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

StepTiger

BeitragMi, Nov 22, 2006 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
eigentlich soll man prüfen, ob einer von 8 Punkten innerhalb eines Quaders, der durch 8 Punkte definiert ist, liegt.

Geht eigentlich mit Vektorengleichungen.

Schriftlich kann ich es darstellen, aber hier? ^^

Mal schauen, ob ich was hinbekomme.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

DerHase

BeitragDo, Nov 23, 2006 1:59
Antworten mit Zitat
Benutzer-Profile anzeigen
TheMatrix hat Folgendes geschrieben:
Öhm, weißt du eigentlich was Blitzbasic genau macht und kann? Oder wolltest du uns nur testen ? Wink

Hier mal n Code:
Code: [AUSKLAPPEN]

Graphics 640,480,16,2

box1 = CreateImage(100,100) : SetBuffer ImageBuffer(box1) : ClsColor 255,0,0 : Cls
box2 = CreateImage(100,100) : SetBuffer ImageBuffer(box2) : ClsColor 0,0,255 : Cls
ClsColor 0,0,0
SetBuffer BackBuffer()

While Not KeyHit(1)
 Cls
  mx = MouseX() : my = MouseY()
  msx = MouseXSpeed() : msy = MouseYSpeed()
 
  bx2 = 200 : by2 = 200
  If ImagesCollide(box1,mx,my,0,box2,bx2,by2,0)
   Color 255,0,0 : Text 0,0,"KOLLISION!!!"
  End If
  DrawImage box1,mx,my
  DrawImage box2,bx2,by2
 Flip
Wend


Und lern erst mal kennen was Blitzbasic überhaupt ist Wink


Matrix Du wolltest sicher sagen Rolling Eyes
Code: [AUSKLAPPEN]

Function BoxCollide(b1x, b1y, b1w, b1h, b2x, b2y, b2w, b2h)

    If (b1y + b1h < b2y) Return 0
    If (b1y > b2y + b2h) Return 0
    If (b1x + b1w < b2x) Return 0
    If (b1x > b1x + b1w) Return 0

   Return 1

End Function


b1? sind hierbei die Parameter des ersten Rechtecks und b2? die des zweiten, x die x-Position, y die y-Position, w die Breite und h die Höhe.

TheMatrix

BeitragDo, Nov 23, 2006 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wollte ich das sagen?

Ich glaube, ich war schon richtig mit meinenm Code Wink

Wozu sollte ich eine extra Kollisionsfunktion schreiben, wenn es dafür schon Funktionen gibt?

Nagut, ich muss eingestehen, ich hätte dafür auch imagerectcollide nehmen können. Das arbeitet noch schneller, aber ich hab das mal eben 1-2min zusammengeschrieben und hatte nicht viel Lust dabei nachzudenken ^^.

Mfg, TheMatrix
°_° °.° °~° °v° .. -.-
 

ChristianK

BeitragDo, Nov 23, 2006 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich meine ich 3D, wenn ich von "Box" spreche!

Wofür ich das brauche:
Ich will einen Würfel bewegen, aber Blitz3D unterstützt laut Hilfe
nur "Sphere to..."-Kollision. Und einen Würfel als Kugel
kollidieren zu lassen ist irgendwie unsinnig, oder?

DerHase

BeitragDo, Nov 23, 2006 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann schau Dir mal >>>DIES HIER<<< an. Btw. der erste Google Treffer...
Play Satyr!
 

MasterK

BeitragDo, Nov 23, 2006 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm... TheMatrix... willst du für ne simple rechteck-kollision wirklich extra 2 images erzeugen??? und was machst du wenn dieses rechteck nur eine bounding box für ein nicht rechteckiges objekt sein soll?
+++ www.masterk.de.vu +++
Lila FTW!

TheMatrix

BeitragDo, Nov 23, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich zwei Boxen kollidieren lassen möchte, wieso möchte ich das denn nicht?

Und wenn du von nicht recteckigen Objekten Sprichst, dann sind sie das nur für den Betrachter. Du kannst genauso gut auch "nicht eckige"-Objekte mit der funktion RectsOverlap überprüfen, ohne diese "Bounding Box" zu benutzen. Also, ich sehe nicht wirklich einen Nutzen in deiner Funktion, da es sie schon in all ihren Variationen gibt Wink
°_° °.° °~° °v° .. -.-

BladeRunner

Moderator

BeitragDo, Nov 23, 2006 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Matrix, er möchte eine 3D-Kollission. Es geht um Körper, nicht um Ebenen. Und da ist imagescollide schlicht falsch.
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

TheMatrix

BeitragDo, Nov 23, 2006 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@Bladerunner

Es ist mir völlig bewusst, dass ProGamer.Coder von einer 3D-Kollision redet, da er dies nun sehr deutlich in diesem Thread ausgedrückt hat. Jedoch hat MasterK meinen Code bezüglich 2D angemekert, was ich mir einfach nicht bieten lassen konnte Wink
°_° °.° °~° °v° .. -.-

DerHase

BeitragDo, Nov 23, 2006 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
@Matrix, die Frage ist nur, warum Du ein Image erstellst wenn man doch nur 2 Rechtecke kollidieren lassen möchte. Man hat nicht zwangsläufig ein Bild, es können auch Bereiche sein, die etwas triggern sollen etc etc. Dafür jeweils ein Image anzulegen ist doch totale Resourcenverschwendung. Und eine "fertige" Rechteckkollision hat Blitz nicht eingebaut, braucht es ja auch nicht, weil es nur 5 Zeilen Code sind und in 3d ist es auch nicht viel mehr.
Play Satyr!

BladeRunner

Moderator

BeitragFr, Nov 24, 2006 0:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimme Hase und Master voll zu.
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

TheMatrix

BeitragFr, Nov 24, 2006 0:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach, gibt es nicht? Dann solltest du dir eventuell nochmal diese Dokumentation zum Befehl Rectsoverlap zu Gemüte führen.

Und jetzt sage mir bitte nocheinmal, das es eine einfache Box-Abfrage in BlitzBasic nicht gibt, die auch ohne Image funtioniert Wink

(Also ich bleibe dabei: Ich finde diese Funktion von MeisterK immer noch unbrauchbar Razz )
°_° °.° °~° °v° .. -.-

DerHase

BeitragFr, Nov 24, 2006 8:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Funktion war von mir, und in der Tat ist sie überflüssig, da schon vorhanden, das hab ich voll übersehn Embarassed Aber sie funktioniert genau so wie die eingebaute, die ich ab sofort auch verwenden werden :]
Play Satyr!

TheMatrix

BeitragFr, Nov 24, 2006 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dann ist es auch nicht weiter schlimm. Wink

Ich dachte schon, ich versteh die Welt nicht mehr ^^.

Aber ich glaube, wir haben für ProGamer.Coder das Problem immer noch nicht so ganz gelöst Very Happy. Da könntest ja du ihm mal eine 3D Kollid Box Funktion schreiben Wink

mfg,TheMatrix
°_° °.° °~° °v° .. -.-

StepTiger

BeitragSa, Nov 25, 2006 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal so nebenbei:
Das ist nicht das Einfachste der Welt.

So lange nur herausgefunden werden soll, ob sich die NICHT GEDREHTE Box innerhalb einer anderen NICHT GEDREHTEN Box befindet, so lange ist BladeRunners Link sinnvoll. Danach kommt Vektorenrechnung, glaube ich. Und das ist nicht einfach...

Zumindest wenn es um Schnittpunkte und Reibung und Kollision geht
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group