Die Beispiele in diesem Artikel teilen Ihnen den spezifischen Code für Java mit, um festzustellen, ob ein Punkt innerhalb des für Ihre Referenz gezogenen Bereichs liegt. Der spezifische Inhalt ist wie folgt
Isptinpoly.java
Paket com.ardo.util.circle; Import Java.util.ArrayList; importieren java.util.list; /*** Java bestimmt, ob sich ein Punkt innerhalb des gezogenen Bereichs befindet (Poly 【isptinpoly】/circle 【distencepc】)* @param Point Detection Point* @param pts Vertex des Polygon* @return Point Retektivs True in der Polygon, ansonsten gibt es false* @Athor @Author. @param Point Detection Point* @param pts vertex des polygon* @return point gibt true in polygon zurück, ansonsten return falsch*/ public static boolean isptinpoly (point2d point, list <point2d> pts) {int n = pts.size (); booleschen borderorvertex = true; // Wenn sich der Punkt auf dem Scheitelpunkt oder der Kante des Polygons befindet, kann er als Punkt im Polygon angesehen werden und wird direkt zurückgegeben. // Toleranz beim Vergleich mit 0 während des Berechnungspunkts 2d p1, p2; // Nachbargebundene Scheitelpunkte Punkt2d p = Punkt; // Der aktuelle Punkt p1 = pts.get (0); // linker Scheitelpunkt für (int i = 1; i <= n; ++ i) {// alle Strahlen überprüfen, wenn (p.equals (p1) {return borderorvertex; // p ist ein Vertex} p2 = pTs. Math.max (p1.x, p2.x)) {// ray liegt außerhalb unserer Interessen p1 = p2; continue;//next ray left point } if(px > Math.min(p1.x, p2.x) && px < Math.max(p1.x, p2.x)){//ray is crossing over by the algorithm (common part of) if(py <= Math.max(p1.y, p2.y)){//x is before of ray if(p1.x == p2.x && py >= Math.min (p1.y, p2.y)) {// überliert einen horizontalen Strahlenrücklauf -Grenzwert; } if (p1.y == p2.y) {// ray ist vertikal if (p1.y == py) {// überlistet einen vertikalen Strahlrücklauf -Grenzwert; } else {// vor Ray ++ intersectCount; }} else {// Punkt auf der linken Seite double xinters = (px - p1.x) * (p2.y - p1.y)/(p2.x - p1.x) + p1.y; // Cross Point von y if (math.abs (py - xinters) <Präzision) {//// } if (py <xinters) {// vor Ray ++ intersectCount; }}}} else {// Spezialfall Wenn Ray den Scheitelpunkt durchquert, wenn (px == p2.x && py <= p2.y) {// p über P2 point2d p3 = pts.get ((i+1) % n); // Nächster Vertex if (px> = math.min (p1.x, p3.x) && px <= math.max (p1.x, p3.x)) {// px liegt zwischen p1.x & p3.x ++ intersectCount; } else {intersectCount += 2; }}} p1 = p2; // Nächster Strahl linker Punkt} if (intersectCount % 2 == 0) {// Außerhalb des Polygon Return Falsch; } else {// ungerade Zahlen befinden sich innerhalb des Polygon -Return True; }}/** * Bestimmen Sie, ob es sich im Kreis befindet double d2 = math.hypot ((p.getX () - C.Getcc (). getX ()), (p.gety () - C.Getcc (). Gety ()); System.out.println ("d2 =="+d2); double r = C.getR (); if (d2> r) {s = "außerhalb des Kreises"; } else if (d2 <r) {s = "im Kreis"; } else {s = "auf dem Kreis"; } return s; } public static void main (String [] args) {point2d point = new Point2d (116.404072, 39,916605); // Testen Sie, ob sich ein Punkt in einer Polygonliste <Point2d> pts = new ArrayList <Point2d> () befindet; PTS.ADD (neuer Punkt2d (116,395, 39,910)); PTS.ADD (neuer Punkt2d (116.394, 39,914)); PTS.ADD (neuer Punkt2d (116,403, 39,920)); pts.add (neuer Punkt2d (116,402, 39,914)); PTS.ADD (neuer Punkt2d (116,410, 39,913)); if (isptinpoly (Punkt, pts)) {System.out.println ("Punkt ist in einem Polygon"); } else {System.out.println ("Punkt ist außerhalb eines Polygons"); } // Testen Sie, ob sich ein Punkt in einem Circle Point2D Centerpoint = New Point2D befindet (116.404172, 39,916605); Kreis C = neuer Kreis (); C.Setcc (Centerpoint); C.Setr (0,0056); String S = DistrictPC (Punkt, c); System.out.println ("ist der Punkt im Kreis:"+s); }} Circle.java
/ ** * Circular Class * @Author Ardo * */ public class Circle {private double r; Privatpunkt2d CC; public void setr (double a) {r = a; } public void setcc (point2d centerOfcir) {cc = centerofcir; } public double getr () {return r; } public point2d getcc () {return cc; }} Point2d.java
public class point2d {public double x; öffentliches Doppel Y; public point2d (double x, double y) {super (); this.x = x; this.y = y; } public double getX () {return x; } public void setx (double x) {this.x = x; } public double gety () {return y; } public void sety (double y) {this.y = y; }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.