تشارككم الأمثلة الواردة في هذه المقالة في الرمز المحدد لـ Java لتحديد ما إذا كانت النقطة ضمن النطاق المرسوم للرجوع إليه. المحتوى المحدد كما يلي
ISPTINPOLY.JAVA
حزمة com.ardo.util.circle ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ /*** تحدد Java ما إذا كانت النقطة ضمن نطاق المرسم (poly 【ISPTINPOLY】/circle 【distencepc】)* param point point* param pts vertex for the polilgon* RENTURN tRESE in the polygon ، وإلا فإنه يعود خطأ* @author ardo*/public class is is { Param Point Point Point* param pts vertex من polygon* regurn point إرجاع صحيح في المضلع ، وإلا return false*/ public static boolean isptinpoly (point2d point ، list <point2d> pts) {int n = pts.size () ؛ Boolean Bornorvertex = صحيح ؛ // إذا كانت النقطة على قمة أو حافة المضلع ، فيمكن اعتبارها نقطة في المضلع ، وسيتم إرجاعها بشكل مباشر intersectcount = 0 ؛ // التسامح عند المقارنة مع 0 أثناء حساب نوع النقطة العائمة point2d p1 ، p2 ؛ // القمم المربوطة بالجوار point2d p = point ؛ // النقطة الحالية p1 = pts.get (0) ؛ // vertex اليسرى لـ (int i = 1 ؛ i <= n ؛ ++ i) {// تحقق من جميع الأشعة إذا (p.equals (p1)) Math.Max (p1.x ، p2.x)) {// ray خارج اهتماماتنا p1 = p2 ؛ متابعة ؛ // النقطة اليسرى Ray التالية}} if (px> math.min (p1.x ، p2.x) && px <math.max (p1.x ، p2.x)) {// ray يعبر أكثر من الخوارزمية (جزء مشترك من) إذا (py <= math.max (p1.y ، p2.y)) Math.Min (p1.y ، p2.y)) {// overlies على شعاع أفقي إرجاع bornorvertex ؛ } if (p1.y == p2.y) {// ray هو رأسي إذا (p1.y == py) {// overlies على عودة الأشعة العمودية ؛ } آخر {// قبل Ray ++ InterSectCount ؛ }} else {// cross point on the side side double xinters = (px - p1.x) * (p2.y - p1.y)/(p2.x - p1.x) + p1.y ؛ } if (py <xinters) {// قبل ray ++ intersectCount ؛ }}}} آخر {// حالة خاصة عندما يكون الأشعة يتجول من خلال Vertex if (px == p2.x && py <= p2.y) {// p crossing على p2 point2d p3 = pts.get ((i+1) ٪ n) ؛ // القسم التالي إذا (px> = math.min (p1.x ، p3.x) && px <= math.max (p1.x ، p3.x)) {// px تقع بين p1.x & p3.x ++ intersectcount ؛ } آخر {intersectCount += 2 ؛ }}} p1 = p2 ؛ // next ray point} if (intersectCount ٪ 2 == 0) {// أرقام حتى خارج إرجاع polygon false ؛ } آخر {// الأرقام الفردية موجودة داخل Polygon Return True ؛ }}/** * حدد ما إذا كان داخل الدائرة * param p * param c * @regurn */public static string quitepc (point2d p ، circle c) {// ugn incred the bisten in the point in the point and the henter of the circle and therias of the circle s string 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 = "خارج الدائرة" ؛ } آخر إذا (d2 <r) {s = "داخل الدائرة" ؛ } آخر {s = "On the Circle" ؛ } العودة s ؛ } الفراغ الثابت العام (سلسلة [] args) {point2d point = new point2d (116.404072 ، 39.916605) ؛ // اختبار ما إذا كانت النقطة داخل قائمة المضاعدات <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 ("point موجود داخل مضلع") ؛ } آخر {system.out.println ("Point خارج المضلع") ؛ }. Circle C = New Circle () ؛ C.SetCC (CenterPoint) ؛ C.Setr (0.0056) ؛ السلسلة S = المسافة (النقطة ، ج) ؛ system.out.println ("هو النقطة في الدائرة:"+s) ؛ }} Circle.Java
/ ** * الفئة الدائرية * Author ARDO * */ Public Class Circle {private double r ؛ point2d cc ؛ public void setr (double a) {r = a ؛ } public void setcc (point2d centerofcir) {cc = centerofcir ؛ } public double getr () {return r ؛ } pince2d getCC () {return cc ؛ }} point2d.java
Public Class Point2D {Public Double X ؛ عام مزدوج 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 ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.