Hitung Jarak Antara Dua Titik di Jawa

1. Ikhtisar

Dalam tutorial singkat ini, kami akan menunjukkan cara menghitung jarak antara dua titik di Java.

2. Rumus Matematika Jarak

Misalkan kita memiliki dua titik pada sebuah bidang: titik pertama A memiliki koordinat (x1, y1), dan titik kedua B memiliki koordinat (x2, y2). Kami ingin menghitung AB, jarak antar titik.

Pertama, mari buat segitiga siku-siku dengan sisi miring AB:

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

Kedua, mari menghitung AC dan CB.

Jelas:

AC = y2 - y1

Demikian pula:

BC = x2 - x1

Mari kita gantikan bagian-bagian dari persamaan tersebut:

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

Akhirnya, dari persamaan di atas kita dapat menghitung jarak antar titik:

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

Sekarang mari beralih ke bagian implementasi.

3. Implementasi Java

3.1. Menggunakan Formula Biasa

Meskipun paket java.lang.Math dan java.awt.geom.Point2D menyediakan solusi siap pakai, pertama-tama mari kita terapkan rumus 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 solusinya, mari kita ambil segitiga dengan kaki 3 dan 4 (seperti yang ditunjukkan pada gambar di atas). Jelas bahwa angka 5 cocok sebagai nilai sisi miring:

3 * 3 + 4 * 4 = 5 * 5

Mari kita periksa solusinya:

@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 Paket java.lang.Math

Jika hasil perkalian dalam metode countDistanceBetweenPoints () terlalu besar, overflow dapat terjadi. Tidak seperti itu, metode Math.hypot () mencegah overflow atau underflow antara:

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 periksa apakah 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 Paket java.awt.geom.Point2D

Terakhir, mari kita hitung jarak dengan metode Point2D.distance () :

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

Sekarang mari kita uji metode 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 menghitung jarak antara dua titik di Java.

Seperti biasa, kode yang digunakan dalam contoh tersedia di GitHub.