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.
geloeschtEDIT: 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
