Temukan Persimpangan Dua Garis di Jawa

1. Ikhtisar

Dalam tutorial singkat ini, kami akan menunjukkan cara mencari titik perpotongan dua garis yang ditentukan oleh fungsi linier dalam bentuk perpotongan kemiringan.

2. Rumus Matematika Persimpangan

Setiap garis lurus (kecuali vertikal) pada suatu bidang dapat ditentukan oleh fungsi linier:

y = mx + b

dengan m adalah gradien dan b adalah perpotongan dengan sumbu y.

Untuk garis vertikal, m akan sama dengan tak terhingga, itulah mengapa kami mengecualikannya. Jika dua garis sejajar, keduanya memiliki kemiringan yang sama, yaitu nilai m yang sama .

Katakanlah kita memiliki dua baris. Fungsi pertama mendefinisikan baris pertama:

y = m1x + b1

Dan fungsi kedua mendefinisikan baris kedua:

y = m2x + b2

Kami ingin menemukan titik perpotongan dari garis-garis ini. Jelas, persamaan tersebut benar untuk titik perpotongan:

y1 = y2

Mari kita gantikan variabel y :

m1x + b1 = m2x + b2

Dari persamaan di atas kita dapat mencari koordinat x- :

x(m1 - m2) = b2 - b1 x = (b2 - b1) / (m1 - m2)

Akhirnya, kita dapat menemukan koordinat y dari titik perpotongan:

y = m1x + b1

Sekarang mari beralih ke bagian implementasi.

3. Implementasi Java

Pertama, kita memiliki empat variabel input - m1, b1 untuk baris pertama, dan m2, b2 untuk baris kedua.

Kedua, kita akan mengubah titik potong yang dihitung menjadi objek berjenis java.awt.Point .

Akhirnya, garis mungkin paralel, oleh karena itu mari kita buat nilai yang dikembalikan Opsional :

public Optional calculateIntersectionPoint( double m1, double b1, double m2, double b2) { if (m1 == m2) { return Optional.empty(); } double x = (b2 - b1) / (m1 - m2); double y = m1 * x + b1; Point point = new Point(); point.setLocation(x, y); return Optional.of(point); }

Sekarang mari kita pilih beberapa nilai dan uji metode untuk garis paralel dan non-paralel.

Sebagai contoh, ambil sumbu x ( y = 0 ) sebagai garis pertama, dan garis yang ditentukan oleh y = x - 1 sebagai garis kedua.

Untuk garis kedua, gradien m sama dengan 1 yang berarti 45 derajat, dan titik potong y sama dengan -1 yang berarti garis tersebut memotong sumbu- y di titik (0, -1).

Jelas secara intuitif bahwa titik perpotongan garis kedua dengan sumbu x haruslah (1,0 ):

Mari kita periksa.

Pertama, mari kita pastikan bahwa ada Titik , karena garisnya tidak sejajar, lalu periksa nilai x dan y :

@Test public void givenNotParallelLines_whenCalculatePoint_thenPresent() { double m1 = 0; double b1 = 0; double m2 = 1; double b2 = -1; Optional point = service.calculateIntersectionPoint(m1, b1, m2, b2); assertTrue(point.isPresent()); assertEquals(point.get().getX(), 1, 0.001); assertEquals(point.get().getY(), 0, 0.001); }

Terakhir, ambil dua garis paralel dan pastikan nilai yang dikembalikan kosong:

@Test public void givenParallelLines_whenCalculatePoint_thenEmpty() { double m1 = 1; double b1 = 0; double m2 = 1; double b2 = -1; Optional point = service.calculateIntersectionPoint(m1, b1, m2, b2); assertFalse(point.isPresent()); }

4. Kesimpulan

Dalam tutorial ini, kami telah menunjukkan cara menghitung titik perpotongan dua garis.

Seperti biasa, kode sumber lengkap tersedia di GitHub.