Kreis im Kreis. Hä?



  • Nabend!
    Kann mir jemand bei einer Funktion helfen die mir sagt ob ein Kreis in einem anderen Kreis liegt?
    Thx, John



  • Entfernung MaMb < ra+rb. Die Entfernung zweier Punkte im rechtwinkligen Kosy berechnet man mit dem Satz der Pythagoras.
    geloescht

    EDIT: sorry, das berechnet nur die kollision. Wenn man schauen will, ob Kreis b in Kreis a liegt geht das so: ra-rb >= Entfernung MaMb.

    EDIT:Jetzt stimmts aber



  • kaestlinger01

    Ist relativ easy 🙂 Wenn Du wissen willst, ob eine Kollision mit einem Punkt vorliegt oder ob ein Punkt in einem Kreis ist nimmt man die Formel:

    d <= r1 - r2

    wenn es sich um 2 Kreise handelt:
    (d1 - d2)2 <= (r1 - r2)2 Ohne Wurzel da schneller!

    Umgesetzt sieht das dann so aus:

    template<typename T> inline bool circleHitsCircle (const vector<T>& circleA, T radiusA,
                                                       const vector<T>& circleB, T radiusB)
    {
            // Quadrat der Entfernung berechnen und entscheiden, ob eine Kollision vorliegt.
        return ((circleA - circleB).lengthSqr() <= square<T>(radiusA + radiusB));
    }
    

    Interessant ist auch, das man das auch ohne Probleme (selbe Formel) auch für Spheren benutzen kann - klar Spheren sind ja nichts anderes als 3D Kreise 😉


Anmelden zum Antworten