Schnellste Weg zur Kollisionerkennung?



  • Hallo.

    Ich habe in einer Datenbank zehntausende Rechtecke.
    Für jedes Rechteck habe ich mit X(float) und Y(float) seinen Mittelpunkt und die Länge(float), Breite(float) und den Winkel(int).
    Parallel dazu habe ich als Zusatz seine vier Punkt mit je X(int) und Y(int).

    Ich möchte ein Rechteck gern herausnehmen und wissen wollen ob es sich mit einem anderem Rechteck überschneidet.

    Eine Funktion habe ich auch schnell gefunden, nämlich IntersectRect(), aber dieses arbeitet nur mit normalen Rechtecken und kann keine rotierenden verarbeiten.

    Kennt vielleicht jemand eine Funktion/Bibliothek für C++/PHP welche das kann?



  • Winkel? Bleiben das immer noch Rechtecke im 2D-Raum oder rotieren die in eine 3. Dimension?

    MfG SideWinder



  • Ist im 2D System und Winkel kann 0-359° annehmen.
    Ich habe die Möglichkeit entweder über die exakten Koordinaten zu arbeiten. Also mit dem Mittelpunkt(X), Länge, Breite und dem Winkel oder über die Pixelkoordinaten der 4 Eckpunkte des Rechtecks.

    Bei Winkel 0°
    -------------------
    |                 |
    |        X        |
    |                 |
    -------------------
    
    Bei Winkel 90°
    |---------|
    |         |
    |         |
    |         |
    |         |
    |    X    |
    |         |
    |         |
    |         |
    |         |
    |---------|
    


  • Solcherart Mathematik bekomme ich vor allem im Bereich Spieleprogrammierung zu sehen und auf einschlägigen Seiten findet man da Material. Hier eine Lösung mit Winkel:

    http://www.flipcode.org/cgi-bin/fcarticles.cgi?show=64153

    MfG SideWinder



  • Danke, aber das OpenGL Konstanten, da komme ich nicht ganz so klar mit 🙄
    Ich wollte gern was Suchen, aber die Suche scheint auf der Seite nicht zu funktionieren, linkt immer auf die aktuelle Seite. Schade.



  • Die Methode render() kannst du ja gedanklich ausblenden und was sich hinter einem Objekt der Klasse Vector2 verbirgt wirst du dir wohl auch zusammenreimen können 😉

    MfG SideWinder


Anmelden zum Antworten