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?

2voto

Adam Cox Punkte 2839

Meine Antwort in C# als komplette Cut & Paste-Lösung (nicht optimiert):

public static bool PointIsWithinCircle(double circleRadius, double circleCenterPointX, double circleCenterPointY, double pointToCheckX, double pointToCheckY)
{
    return (Math.Pow(pointToCheckX - circleCenterPointX, 2) + Math.Pow(pointToCheckY - circleCenterPointY, 2)) < (Math.Pow(circleRadius, 2));
}

Verwendung:

if (!PointIsWithinCircle(3, 3, 3, .5, .5)) { }

1voto

Selrac Punkte 2063

Wie bereits erwähnt, können wir wie folgt zeigen, ob der Punkt auf dem Kreis liegt

if ((x-center_x)^2 + (y - center_y)^2 < radius^2) {
    in.circle <- "True"
} else {
    in.circle <- "False"
}

Um dies grafisch darzustellen, können wir verwenden:

plot(x, y, asp = 1, xlim = c(-1, 1), ylim = c(-1, 1), col = ifelse((x-center_x)^2 + (y - center_y)^2 < radius^2,'green','red'))
draw.circle(0, 0, 1, nv = 1000, border = NULL, col = NA, lty = 1, lwd = 1)

1voto

Wenn Sie in der Welt von 3D prüfen wollen, ob ein 3D-Punkt in einer Einheitskugel liegt, müssen Sie etwas Ähnliches tun. Um in 2D zu arbeiten, müssen Sie lediglich 2D-Vektoroperationen verwenden.

    public static bool Intersects(Vector3 point, Vector3 center, float radius)
    {
        Vector3 displacementToCenter = point - center;

        float radiusSqr = radius * radius;

        bool intersects = displacementToCenter.magnitude < radiusSqr;

        return intersects;
    }

0voto

Ich habe den unten stehenden Code für Anfänger wie mich verwendet :).

public class incirkel {

public static void main(String[] args) {
    int x; 
    int y; 
    int middelx; 
    int middely; 
    int straal; {

// Adjust the coordinates of x and y 
x = -1;
y = -2;

// Adjust the coordinates of the circle
middelx = 9; 
middely = 9;
straal =  10;

{
    //When x,y is within the circle the message below will be printed
    if ((((middelx - x) * (middelx - x)) 
                    + ((middely - y) * (middely - y))) 
                    < (straal * straal)) {
                        System.out.println("coordinaten x,y vallen binnen cirkel");
    //When x,y is NOT within the circle the error message below will be printed
    } else {
        System.err.println("x,y coordinaten vallen helaas buiten de cirkel");
    } 
}

    }
}}

0voto

Ketan Ramteke Punkte 9024

Hier ist der einfache Java-Code für die Lösung dieses Problems:

und die Mathematik, die dahinter steckt: https://math.stackexchange.com/questions/198764/how-to-know-if-a-point-is-inside-a-circle

boolean insideCircle(int[] point, int[] center, int radius) {
    return (float)Math.sqrt((int)Math.pow(point[0]-center[0],2)+(int)Math.pow(point[1]-center[1],2)) <= radius;
}

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