Les exemples de cet article partagent avec vous le code spécifique de Java pour déterminer si un point se trouve dans la plage dessinée pour votre référence. Le contenu spécifique est le suivant
ISptinpoly.java
package com.ardo.util.Circle; import java.util.arraylist; Importer java.util.list; / ** * Java détermine si un point se trouve dans la plage dessinée (poly 【iSptinpoly】 / Circle 【Distencepc】) * @param point de détection Point * @param pts vertex du polygon * @return return true in the polygon, sinon il renvoie false * @author ardo * / public Isptinpoly {/ ** * déterminer si le point * / public est @Param Point {/ ** * Point de détection * @param pts vertex du polygon * @return Renvoie vrai dans le polygone, sinon renvoie false * / public static boolean iSptinpoly (point2d point, liste <point2d> pts) {int n = pts.size (); booléen lindorvertex = true; // Si le point est sur le sommet ou le bord du polygone, il peut être considéré comme un point dans le polygone, et il sera directement renvoyé True int intersectCount = 0; // Contracs Count de x double précision = 2E-10; // Tolérance en comparant 0 pendant le type de point de point flottant Point2d P1, p2; // Vertices liées du voisin Point2d p = point; // le point actuel p1 = pts.get (0); // Vertex gauche pour (int i = 1; i <= n; ++ i) {// vérifier tous les rayons if (p.equals (p1)) {return boundorvertex; // p est un vertex} p2 = pts.get (i% n); // Math.max (p1.x, p2.x)) {// Ray est en dehors de nos intérêts p1 = p2; continuer; // point gauche du rayon suivant} if (px> math.min (p1.x, p2.x) && px <math.max (p1.x, p2.x)) {// Ray est traversé par l'algorithme (partie commune de) if (py <= math.max (p1.y, p2.y) {// x est avant de rayon if (p1.x == Math.min (p1.y, p2.y)) {// recouvre sur un rayon de rayon horizontal Boundorvertex; } if (p1.y == p2.y) {// ray est vertical if (p1.y == py) {// recouvre sur un rayon vertical Boundorvertex; } else {// avant Ray ++ intersectCount; }} else {// Point croisé sur le côté gauche double xINTERS = (px - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y; // point transversal de y if (math.abs (py - xintrers) <precision) {// overlies on a rayon returnorvertex; } if (py <xINTER) {// avant Ray ++ intersectCount; }}}} else {// cas spécial lorsque Ray traverse le sommet if (px == p2.x && py <= p2.y) {// p traverse sur p2 point2d p3 = pts.get ((i + 1)% n); // Vertex suivant if (px> = math.min (p1.x, p3.x) && px <= math.max (p1.x, p3.x)) {// px se situe entre p1.x & p3.x ++ intersectCount; } else {intersectCount + = 2; }}} p1 = p2; // point gauche du rayon suivant} if (intersectCount% 2 == 0) {// même les nombres sont en dehors du polygon return false; } else {// Les nombres impairs sont à l'intérieur du polygone return true; }} / ** * Déterminez s'il se trouve à l'intérieur du cercle * @param p * @param c * @return * / public static String Distancepc (Point2d p, cercle c) {// juge la relation entre la distance entre le point et le centre du cercle et le rayon de la chaîne de cercle S; 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 = "en dehors du cercle"; } else if (d2 <r) {s = "à l'intérieur du cercle"; } else {s = "sur le cercle"; } return s; } public static void main (String [] args) {Point2d Point = new Point2d (116.404072, 39.916605); // Testez si un point se trouve dans une liste de polygones <point2d> pts = new ArrayList <point2d> (); PTS.ADD (New Point2d (116.395, 39.910)); pts.add (new Point2d (116.394, 39.914)); PTS.ADD (New Point2d (116.403, 39.920)); PTS.ADD (New Point2d (116.402, 39.914)); PTS.ADD (New Point2d (116.410, 39.913)); if (isptinpoly (point, pts)) {System.out.println ("Le point est à l'intérieur d'un polygone"); } else {System.out.println ("Le point est en dehors d'un polygone"); } // Testez si un point se trouve à l'intérieur d'un cercle Point2d CenterPoint = new Point2d (116.404172, 39.916605); Circle C = nouveau cercle (); C.SetCC (CenterPoint); C.Setr (0,0056); String S = DistancePc (point, C); System.out.println ("est le point du cercle:" + s); }} Cercle.java
/ ** * classe circulaire * @author ardo * * / public class Circle {private double r; Private Point2d 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
classe publique Point2d {public double x; double double 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 sey (double y) {this.y = y; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.