Entwickler-Ecke
Multimedia / Grafik - Kollisionsprüfung
frankyboy - Sa 12.04.03 18:59
Titel: Kollisionsprüfung
Hallo,
kann mir jemand einen Tipp geben, wie man (relativ einfach) prüfen kann, ob ein Kreis gegen ein Rechteck stößt. Das ganze soll auf einer TImage-Komponente durchgeführt werden.
Ich habe jetzt schon ewig rumprobiert, hatte auch schon einige (meiner Meinung nach :wink: ) geniale Ideen, aber beim Testen hat es immer nur teilweise funktioniert. :(
Ich bin für Tipp (aber auch für Komplettlösungen :lol: )dankbar
Frankyboy
Aya - Mo 14.04.03 09:38
Hi,
ich hab zwar keine lösung für dein Problem direkt, aber nen kleinen tipp evtl... ;)
Schau mal hier:
http://www.gametutorials.com/download/OpenGL/SpherePolyCollision_OGL.zip
Das ist ein Tutorial in dem gezeigt wird wie man prüft ob eine Kugel mit einem Polygon kollidiert... (allerdings in C++, aber is ja egal.. die rechnung is die gleiche) vieleicht schaffst du es dir daraus das ganze für 2D abzuleiten, ansonsten... tu einfach so als wäre bei dir alles 3D ;)
Au'revoir,
Aya~
frankyboy - Mo 14.04.03 12:27
Erstmal Danke für die Hilfe,
ich werde mal schauen, ob ich da was passendes für mich rausziehen kann.
MfG Frankyboy
PS: Ich bin für weitere Tipps offen, Falls ich mir diesem nicht zu Rande komme :wink:
Sunreader - Mo 14.04.03 17:26
Kann das rechteck schräg sein oder nur ein standart teil?
Sonst würde ich es irgendwieso probieren:
//erst prüfen, ob der kreismittelpunkt näher als der radius an einem eckpunkt liegt:
if ((x1- kx)^2 + (y1- ky)^2 < kr) or ((x2- kx)^2 + (y1- ky)^2 < kr) or ((x1- kx)^2 + (y2- ky)^2 < kr) or ((x2- kx)^2 + (y2- ky)^2 < kr) then
//dann prüfen ob der kreis links und rechts einen kleineren abstand als der radius von dem rechteck hat und wizschen den x und y koordinaten des eckes liegt
if ((abs(x1-kx)< kr) or (abs(x2-kx)< kr)) and ((y1>ky) and (y2<ky)) then
//...und dasselbe in y- richtung
if ((abs(y1-kx)< kr) or (abs(y2-kx)< kr)) and ((x1>ky) and (x2<ky)) then
weiß nich genau ob das klappt, so würde ich es auf jeden fall versuchen...
_________________________________________
x1,x2,y1,y2 sind rechteckskoordinaten, kx und ky kreismittelpunktskoordinaten und kr der radius.
Sunreader - Mo 14.04.03 17:28
bei der ersten if-zeile muss es natürlich immer kr*kr heissen, sonst funktioniert der pytagoras ja nicht...
frankyboy - Mo 14.04.03 20:06
Erstmal vielen Dank für die Hilfe. Ich glaube, dass ich es jetzt schaffe. :D
MfG Frankyboy
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!