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?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)) { }
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)
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;
}
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");
}
}
}
}}
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;
}