Vypočítajte vzdialenosť medzi dvoma bodmi v Jave

1. Prehľad

V tomto rýchlom výučbe si ukážeme, ako vypočítať vzdialenosť medzi dvoma bodmi v Jave.

2. Matematický vzorec vzdialenosti

Povedzme, že máme dva body v rovine: prvý bod A má súradnice (x1, y1) a druhý bod B má súradnice (x2, y2). Chceme vypočítať AB, vzdialenosť medzi bodmi.

Najskôr vytvorme pravý trojuholník s preponou AB:

Podľa Pytagorovej vety je súčet druhých mocnín dĺžok nôh trojuholníka rovnaký ako štvorček dĺžky prepočítanej trojuholníka: AB2 = AC2 + CB2.

Po druhé, poďme vypočítať AC a CB.

Je zrejmé, že:

AC = y2 - y1

Podobne:

BC = x2 - x1

Nahraďme časti rovnice:

vzdialenosť * vzdialenosť = (y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)

Nakoniec z vyššie uvedenej rovnice môžeme vypočítať vzdialenosť medzi bodmi:

vzdialenosť = štvorcový ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1))

Teraz prejdime k implementačnej časti.

3. Implementácia Java

3.1. Používanie obyčajného vzorca

Hoci java.lang.Math a java.awt.geom.Point2D balíčky poskytujú hotové riešenia, najskôr implementujeme vyššie uvedený vzorec ako je:

verejné zdvojnásobenie vypočítaťVzdialenosť medzi bodmi (dvojité x1, dvojité y1, dvojité x2, dvojité y2) {návrat Math.sqrt ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)); }

Na vyskúšanie riešenia si vezmeme trojuholník s nohami 3 a 4 (ako je znázornené na obrázku vyššie). Je jasné, že počet 5 je vhodná ako hodnota prepočtu:

3 * 3 + 4 * 4 = 5 * 5

Poďme skontrolovať riešenie:

@Test public void givenTwoPoints_whenCalculateDistanceByFormula_thenCorrect () {double x1 = 3; dvojitý y1 = 4; dvojitý x2 = 7; dvojitý y2 = 1; dvojitá vzdialenosť = service.calculateDistanceB BetweenPoints (x1, y1, x2, y2); assertEquals (vzdialenosť, 5, 0,001); }

3.2. Použitím java.lang.Math Balíček

Ak je výsledkom násobenia v vypočítaťVzdialenosťBodyPoints () metóda je príliš veľká, môže dôjsť k pretečeniu. Na rozdiel od toho Math.hypot () metóda zabráni strednému pretečeniu alebo podtečeniu:

verejné zdvojnásobenie vypočítaťVzdialenosť medzi bodmiWithHypot (dvojité x1, dvojité y1, dvojité x2, dvojité y2) {dvojité ac = Math.abs (y2 - y1); double cb = Math.abs (x2 - x1); návrat Math.hypot (ac, cb); }

Zoberme rovnaké body ako predtým a skontrolujte, či je vzdialenosť rovnaká:

@Test public void givenTwoPoints_whenCalculateDistanceWithHypot_thenCorrect () {double x1 = 3; dvojitý y1 = 4; dvojitý x2 = 7; dvojitý y2 = 1; dvojitá vzdialenosť = service.calculateDistanceB BetweenPointsWithHypot (x1, y1, x2, y2); assertEquals (vzdialenosť, 5, 0,001); }

3.3. Použitím java.awt.geom.Point2D Balíček

Nakoniec vypočítajme vzdialenosť pomocou Point2D.distance () metóda:

verejné dvojité spočítaťVzdialenosťBodyPointsWithPoint2D (dvojité x1, dvojité y1, dvojité x2, dvojité y2) {návratové Point2D.distance (x1, y1, x2, y2); }

Teraz otestujme metódu rovnakým spôsobom:

@Test public void givenTwoPoints_whenCalculateDistanceWithPoint2D_thenCorrect () {double x1 = 3; dvojitý y1 = 4; dvojitý x2 = 7; dvojitý y2 = 1; dvojitá vzdialenosť = service.calculateDistanceB BetweenPointsWithPoint2D (x1, y1, x2, y2); assertEquals (vzdialenosť, 5, 0,001); }

4. Záver

V tomto tutoriáli sme si ukázali niekoľko spôsobov, ako vypočítať vzdialenosť medzi dvoma bodmi v Jave.

Ako vždy, kód použitý v príkladoch je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found