Calcolo dell’angolo tra due linee senza dover calcolare la pendenza? (Giava)

Ho due linee: L1 e L2. Voglio calcolare l’angolo tra le due linee. L1 ha punti: {(x1, y1), (x2, y2)} e L2 ha punti: {(x3, y3), (x4, y4)} .

Come posso calcolare l’angolo formato tra queste due linee, senza dover calcolare le pendenze? Il problema che sto avendo è che a volte ho linee orizzontali (linee lungo l’asse x) e la seguente formula fallisce (dividi per zero l’eccezione):

 arctan((m1 - m2) / (1 - (m1 * m2))) 

dove m1 e m2 sono rispettivamente le pendenze della linea 1 e della linea 2. Esiste una formula / un algoritmo in grado di calcolare gli angoli tra le due linee senza mai ottenere eccezioni di divisione per zero? Qualsiasi aiuto sarebbe molto apprezzato.

Questo è il mio frammento di codice:

 // Calculates the angle formsd between two lines public static double angleBetween2Lines(Line2D line1, Line2D line2) { double slope1 = line1.getY1() - line1.getY2() / line1.getX1() - line1.getX2(); double slope2 = line2.getY1() - line2.getY2() / line2.getX1() - line2.getX2(); double angle = Math.atan((slope1 - slope2) / (1 - (slope1 * slope2))); return angle; } 

Grazie.