Hm . das ist nicht so einfach.
1. Da die Berechnung etwas mehr Zeit kostet, solltest du mit BoundaryBox-oder -Circle überprüfen, ob sie sich schneiden können.
(optional, kannte auch erst machen, wenn du Performanceprobleme bekommst.)
Dann die eigentliche überprüfung:
Mein Ansatrtz wäre wie folgt:
Ausgangswete: 1 Ortsvektor_Kreis, 1 Ortsvektor_Rechteck, Radius_Kreis, Höhe_Rechteck, Breite_Rechteck.
1. Bilde den Differenzvektor.
(Wenn du keine BoundaryBox verwendest, kannst du hier übeprüfen: wenn länge > (radius + sqrt(rechtechhöhe²+rechteckbreite²)) dann berühren sie sich nicht.)
Kreisradius abziehen. Also Vektor = Vektor * (1 - Radius/Betrag(Vektor))
Wenn jetzt Betrag(Vektor_x) kleiner ist als die Breite, oder Betrag(Vektor_y) kleiner ist als die Höhe, dann berühren sie sich
Hmmm ... neee, nochmal nachgedacht, das passt irgendwie noch nicht so richtig ...
Mist