401 Stimmen

Gleichung zur Prüfung, ob ein Punkt innerhalb eines Kreises liegt

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?

15voto

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");

13voto

Jason Punyon Punkte 38137

Berechnen Sie die Entfernung

D = Math.Sqrt(Math.Pow(center_x - x, 2) + Math.Pow(center_y - y, 2))
return D <= radius

das ist in C#...konvertieren für die Verwendung in Python...

7voto

Wie oben erwähnt - verwenden Sie den euklidischen Abstand.

from math import hypot

def in_radius(c_x, c_y, r, x, y):
    return math.hypot(c_x-x, c_y-y) <= r

6voto

Cabbage Champion Punkte 1153

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.

enter image description here

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;
    }

2voto

Daniel Kvist Punkte 2862

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X