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.