חשב את המרחק בין שתי נקודות בג'אווה

1. סקירה כללית

במדריך מהיר זה נראה כיצד לחשב את המרחק בין שתי נקודות ב- Java.

2. נוסחת המתמטיקה של המרחק

נניח שיש לנו שתי נקודות במישור: לנקודה הראשונה A יש את הקואורדינטות (x1, y1), ולנקודה השנייה B יש את הקואורדינטות (x2, y2). אנו רוצים לחשב את AB, את המרחק בין הנקודות.

ראשית, בואו לבנות משולש ימני עם ההיפוטנוזה AB:

על פי משפט פיתגורס, סכום ריבועי אורכי רגלי המשולש זהה לריבוע אורך ההיפוטנוזה של המשולש: AB2 = AC2 + CB2.

שנית, בואו נחשב AC ו- CB.

מובן מאליו:

AC = y2 - y1

בדומה לכך:

BC = x2 - x1

בואו נחליף את חלקי המשוואה:

מרחק * מרחק = (y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)

לבסוף, מהמשוואה לעיל אנו יכולים לחשב את המרחק בין הנקודות:

מרחק = sqrt ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1))

עכשיו בואו נעבור לחלק היישום.

3. יישום ג'אווה

3.1. שימוש בפורמולה רגילה

למרות ש java.lang.Math ו java.awt.geom.Point2D חבילות מספקות פתרונות מוכנים, ראשית ניישם את הנוסחה שלעיל כפי שהיא:

חישוב כפול ציבוריDistanceBetweenPoints (כפול x1, כפול y1, כפול x2, כפול y2) {החזר Math.sqrt ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)); }

כדי לבדוק את הפתרון, ניקח את המשולש עם הרגליים 3 ו 4 (כפי שמוצג בתמונה למעלה). ברור שהמספר 5 מתאים כערך ההיפוטנוזה:

3 * 3 + 4 * 4 = 5 * 5

בואו נבדוק את הפיתרון:

@Test הציבור בטל givenTwoPoints_whenCalculateDistanceByFormula_thenCorrect () {כפול x1 = 3; כפול y1 = 4; כפול x2 = 7; כפול y2 = 1; מרחק כפול = service.calculateDistanceBetweenPoints (x1, y1, x2, y2); assertEquals (מרחק, 5, 0.001); }

3.2. באמצעות java.lang.Math חֲבִילָה

אם תוצאת הכפל ב- CalcDistanceBetweenPoints () השיטה גדולה מדי, הצפה יכולה להתרחש. שלא כמו זה, Math.hypot () שיטה מונעת הצפת ביניים או זרימת ביניים:

מחשבון כפול ציבוריDistanceBetweenPointsWithHypot (כפול x1, כפול y1, כפול x2, כפול y2) {כפול ac = Math.abs (y2 - y1); כפול cb = Math.abs (x2 - x1); להחזיר Math.hypot (ac, cb); }

בוא ניקח את אותן נקודות כמו קודם ונבדוק שהמרחק זהה:

@Test public void givenTwoPoints_whenCalculateDistanceWithHypot_thenCorrect () {כפול x1 = 3; כפול y1 = 4; כפול x2 = 7; כפול y2 = 1; מרחק כפול = service.calculateDistanceBetweenPointsWithHypot (x1, y1, x2, y2); assertEquals (מרחק, 5, 0.001); }

3.3. באמצעות java.awt.geom.Point2D חֲבִילָה

לבסוף, בואו נחשב את המרחק עם ה- Point2D.distance () שיטה:

מחשבון כפול ציבורי מחשבון מרחק בין נקודות פוינט עםPoint2D (כפול x1, כפול y1, כפול x2, כפול y2) {חזרה נקודה 2D מרחק (x1, y1, x2, y2); }

עכשיו בואו לבדוק את השיטה באותו אופן:

@Test הציבור בטל givenTwoPoints_whenCalculateDistanceWithPoint2D_thenCorrect () {כפול x1 = 3; כפול y1 = 4; כפול x2 = 7; כפול y2 = 1; מרחק כפול = service.calculateDistanceBetweenPointsWithPoint2D (x1, y1, x2, y2); assertEquals (מרחק, 5, 0.001); }

4. מסקנה

במדריך זה הראינו כמה דרכים לחישוב המרחק בין שתי נקודות ב- Java.

כמו תמיד, הקוד המשמש בדוגמאות זמין ב- GitHub.