1. Gambaran keseluruhan
Dalam tutorial ringkas ini, kami akan menunjukkan bagaimana mencari titik persilangan dua garis yang ditentukan oleh fungsi linear dalam bentuk cerobong-pintasan.
2. Rumus Matematik Persilangan
Sebarang garis lurus (kecuali menegak) pada satah dapat ditentukan oleh fungsi linear:
y = mx + b
di mana m adalah cerun dan b adalah pintasan-y.
Untuk garis menegak, m sama dengan tak terhingga, sebab itulah kami mengecualikannya. Sekiranya dua garis selari, mereka mempunyai cerun yang sama, iaitu nilai m yang sama .
Katakan kita mempunyai dua baris. Fungsi pertama menentukan baris pertama:
y = m1x + b1
Dan fungsi kedua menentukan baris kedua:
y = m2x + b2
Kami mahu mencari titik persilangan garis ini. Jelas, persamaan itu berlaku untuk titik persimpangan:
y1 = y2
Mari ganti pemboleh ubah 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 mencari koordinat y dari titik persimpangan:
y = m1x + b1
Mari sekarang beralih ke bahagian pelaksanaan.
3. Pelaksanaan Java
Pertama, kita mempunyai empat pemboleh ubah input - m1, b1 untuk baris pertama, dan m2, b2 untuk baris kedua.
Kedua, kita akan menukar titik persilangan yang dikira menjadi objek jenis java.awt.Point .
Akhirnya, garis mungkin selari, jadi mari kita menjadikan nilai yang dikembalikan Pilihan :
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 memilih beberapa nilai dan menguji kaedah untuk garis selari dan tidak selari.
Sebagai contoh, mari kita ambil x -axis ( y = 0 ) sebagai baris pertama, dan garis yang ditakrifkan oleh y = x - 1 sebagai baris kedua.
Untuk garis kedua, cerun m sama dengan 1 yang bermaksud 45 darjah, dan pintasan- y sama dengan -1 yang bermaksud bahawa garis memintas paksi - y pada titik (0, -1).
Secara intuitif jelas bahawa titik persimpangan baris kedua dengan x -axis mestilah (1,0 ):

Mari kita periksa.
Pertama, pastikan Titik hadir, kerana garis tidak selari, dan kemudian 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); }
Akhir sekali, mari kita ambil dua garis selari 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 mengira titik persilangan dua garis.
Seperti biasa, kod sumber lengkap boleh didapati di GitHub.