Hitung Jarak Antara Dua Titik di Jawa

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kami akan menunjukkan cara mengira jarak antara dua titik di Java.

2. Rumus Matematik Jarak

Katakan kita mempunyai dua titik pada satah: titik pertama A mempunyai koordinat (x1, y1), dan titik kedua B mempunyai koordinat (x2, y2). Kami mahu mengira AB, jarak antara titik.

Pertama, mari kita bina segitiga tepat dengan hipotenuse AB:

Menurut teorema Pythagoras, jumlah kuadrat panjang kaki segitiga sama dengan kuadrat panjang hipotenus segitiga: AB2 = AC2 + CB2 .

Kedua, mari kita mengira AC dan CB.

Jelas:

AC = y2 - y1

Begitu juga:

BC = x2 - x1

Mari ganti bahagian persamaan:

distance * distance = (y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)

Akhirnya, dari persamaan di atas kita dapat mengira jarak antara titik:

distance = sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1))

Sekarang mari kita beralih ke bahagian pelaksanaan.

3. Pelaksanaan Java

3.1. Menggunakan Formula Polos

Walaupun pakej java.lang.Math dan java.awt.geom.Point2D menyediakan penyelesaian yang siap, pertama-tama kita melaksanakan formula di atas seperti:

public double calculateDistanceBetweenPoints( double x1, double y1, double x2, double y2) { return Math.sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)); }

Untuk menguji penyelesaiannya, mari kita ambil segitiga dengan kaki 3 dan 4 (seperti yang ditunjukkan dalam gambar di atas). Sudah jelas bahawa nombor 5 sesuai sebagai nilai hipotenus:

3 * 3 + 4 * 4 = 5 * 5

Mari periksa penyelesaiannya:

@Test public void givenTwoPoints_whenCalculateDistanceByFormula_thenCorrect() { double x1 = 3; double y1 = 4; double x2 = 7; double y2 = 1; double distance = service.calculateDistanceBetweenPoints(x1, y1, x2, y2); assertEquals(distance, 5, 0.001); }

3.2. Menggunakan pakej java.lang.Math

Sekiranya hasil pendaraban dalam kaedah calculDistanceBetweenPoints () terlalu besar, limpahan boleh berlaku. Tidak seperti itu, kaedah Math.hypot () menghalang limpahan atau aliran bawah perantaraan:

public double calculateDistanceBetweenPointsWithHypot( double x1, double y1, double x2, double y2) { double ac = Math.abs(y2 - y1); double cb = Math.abs(x2 - x1); return Math.hypot(ac, cb); }

Mari kita ambil titik yang sama seperti sebelumnya dan pastikan jaraknya sama:

@Test public void givenTwoPoints_whenCalculateDistanceWithHypot_thenCorrect() { double x1 = 3; double y1 = 4; double x2 = 7; double y2 = 1; double distance = service.calculateDistanceBetweenPointsWithHypot(x1, y1, x2, y2); assertEquals(distance, 5, 0.001); }

3.3. Menggunakan Pakej java.awt.geom.Point2D

Akhirnya, mari kita mengira jarak dengan kaedah Point2D.distance () :

public double calculateDistanceBetweenPointsWithPoint2D( double x1, double y1, double x2, double y2) { return Point2D.distance(x1, y1, x2, y2); }

Sekarang mari kita menguji kaedah dengan cara yang sama:

@Test public void givenTwoPoints_whenCalculateDistanceWithPoint2D_thenCorrect() { double x1 = 3; double y1 = 4; double x2 = 7; double y2 = 1; double distance = service.calculateDistanceBetweenPointsWithPoint2D(x1, y1, x2, y2); assertEquals(distance, 5, 0.001); }

4. Kesimpulan

Dalam tutorial ini, kami telah menunjukkan beberapa cara untuk mengira jarak antara dua titik di Java.

Seperti biasa, kod yang digunakan dalam contoh boleh didapati di GitHub.