Wenn Sie einen Kreis mit Mittelpunkt haben (center_x, center_y)
und Radius radius
Wie prüft man, ob ein bestimmter Punkt mit den Koordinaten (x, y)
innerhalb des Kreises liegt?
Antworten
Zu viele Anzeigen?Finde den Abstand zwischen dem Mittelpunkt des Kreises und den angegebenen Punkten. Wenn der Abstand zwischen ihnen kleiner ist als der Radius, dann befindet sich der Punkt innerhalb des Kreises. Wenn der Abstand zwischen den beiden Punkten gleich dem Radius des Kreises ist, dann liegt der Punkt auf dem Umfang des Kreises. Wenn der Abstand größer als der Radius ist, dann liegt der Punkt außerhalb des Kreises.
int d = r^2 - ((center_x-x)^2 + (center_y-y)^2);
if(d>0)
print("inside");
else if(d==0)
print("on the circumference");
else
print("outside");
Die folgende Gleichung ist ein Ausdruck, der prüft, ob ein Punkt innerhalb eines gegebenen Kreises liegt, wobei xP & yP sind die Koordinaten des Punktes, xC & yC sind die Koordinaten des Kreismittelpunkts und R der Radius des betreffenden Kreises ist.
Wenn der obige Ausdruck wahr ist, liegt der Punkt innerhalb des Kreises.
Nachstehend finden Sie eine Beispielimplementierung in C#:
public static bool IsWithinCircle(PointF pC, Point pP, Single fRadius){
return Distance(pC, pP) <= fRadius;
}
public static Single Distance(PointF p1, PointF p2){
Single dX = p1.X - p2.X;
Single dY = p1.Y - p2.Y;
Single multi = dX * dX + dY * dY;
Single dist = (Single)Math.Round((Single)Math.Sqrt(multi), 3);
return (Single)dist;
}
Dies ist die gleiche Lösung wie erwähnt von Jason Punyon aber sie enthält ein Pseudocode-Beispiel und einige weitere Details. Ich habe seine Antwort gesehen, nachdem ich dies geschrieben hatte, aber ich wollte meine nicht entfernen.
Ich denke, am einfachsten ist es, wenn man zunächst den Abstand zwischen dem Mittelpunkt des Kreises und dem Punkt berechnet. Ich würde diese Formel verwenden:
d = sqrt((circle_x - x)^2 + (circle_y - y)^2)
Vergleichen Sie dann einfach das Ergebnis dieser Formel, den Abstand ( d
), wobei die radius
. Wenn die Entfernung ( d
) ist kleiner als oder gleich dem Radius ( r
), liegt der Punkt innerhalb des Kreises (auf dem Rand des Kreises, wenn d
y r
gleich sind).
Hier ist ein Pseudocode-Beispiel, das leicht in eine beliebige Programmiersprache umgewandelt werden kann:
function is_in_circle(circle_x, circle_y, r, x, y)
{
d = sqrt((circle_x - x)^2 + (circle_y - y)^2);
return d <= r;
}
Wo circle_x
y circle_y
sind die Mittelpunktskoordinaten des Kreises, r
ist der Radius des Kreises, und x
y y
sind die Koordinaten des Punktes.