como verificar uma intersecção entre duas retas java
/* Imagine duas retas no plano cartesiano, onde seus coeficientes respectivos são a1 e b1, e
a2 e b2. Faça um programa em Java para calcular quais as coordenadas do ponto de interseção
entre as duas retas (mostre uma mensagem caso não haja intersecção).*/
//uma reta é formada por 2 pontos no plano
// um ponto é formado por cordenadas(x,y)
// formula geral da reta ax+by+c=0
//coeficiente angular > m =
/*
* Autor: Janerson Douglas
*
* Prof: Rafael Leal
*/
import java.util.*;
public class Exercicio25{
public static void main(String[] args ) {
Scanner input = new Scanner(System.in);
// coletando dados para formar um reta
double xa ,ya , xb,yb; // Reta R composta pelo ponto A e B
double xc ,yc , xd,yd; // Reta S composta pelo ponto C e D
double m,m1,x,y,y1,y2;
// Lendo os Pontos A e B
System.out.println("Cordenadas do Ponto A");
System.out.print("Valor de X: ");
xa = input.nextDouble();
System.out.print("Valor de Y: ");
ya = input.nextDouble();
System.out.println("Cordenadas do Ponto B");
System.out.print("Valor de X: ");
xb = input.nextDouble();
System.out.print("Valor de Y: ");
yb = input.nextDouble();
// Lendo os Pontos C e D
System.out.println("Cordenadas do Ponto C");
System.out.print("Valor de X: ");
xc = input.nextDouble();
System.out.print("Valor de Y: ");
yc = input.nextDouble();
System.out.println("Cordenadas do Ponto D");
System.out.print("Valor de X: ");
xd = input.nextDouble();
System.out.print("Valor de Y: ");
yd = input.nextDouble();
// CALCULANDO O COEFICIENTE ANGULAR DA RETA R QUE PASSA PELOS PONTOS A E B
// m = (yb-ya)/(xb-xa)
// calculo da reta que passa por dois pontos y-y1=m(x-x1)
m = (yb-ya)/(xb-xa);
// y1=(m*(x))-(m*(xa))+ya;
// CALCULANDO O COEFICIENTE ANGULAR DA RETA R QUE PASSA PELOS PONTOS C E D
// m1 = (yd-yc)/(xd-xc)
m1 = (yd-yc)/(xd-xc);
// y2=(m1*(x))-(m1*(xc))+yc;
x = ((m*(xa))+ya + (m*(xa))-ya)/((yd*yb)+yd)*-1;
y = (m1*(x)-(m1*(xc))+yc);
if(m==m1 || m<0 || m1<0){
System.out.println("Não existe ponto de intersecção");
}else{
System.out.println("Ponto de intersecção: ("+x+" , "+y+")");
}
}
}