Pessoal me ajudem a resolver isso,
preciso achar o ponto de intersecçao entre duas retas de coeficiente a1 e b1 e a2 e b2 respectivamente
fiz o código abaixo em alguns caso da certo mas em outros em vez de exibir o valor de X e Y ex: (4,3) exibe uma msg assim (infinity,infinity)
/* 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+")");
       }
    }
}
         
        
          
        
           
           
           1 curtida
         
         
            
            
          
       
      
        
        
          posta o erro junto com a stacktrace
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          
Olá amigo o erro não está na execução e sim nos cálculos
o erro a que me refiro é que fazendo o teste de mesa e usando o aplicativo geogebra eu chego a um valor x e y
mas no algoritmo que fiz no java não encontra esse valor…e as vezes aparece (inifinty , - infinity) em vez de aparecer por exemplo (3,4) referente aos valores de x e y
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          
Olá, desculpe a minha ignorância, mas o que seria stacktrace?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          
Vlw ViniGodoy !!!  :lol:
já tinha visto sobre o uso do intersectline…mas eu estava procurando algo mais simples
e com a ajuda do meu Professor cheguei a isso…
/* 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 interse¬çã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 a1,b1,a2,b2,x,y;  // 
     
       
       // Lendo os Coeficientes a1 e b1
        System.out.println("Coeficiente da 1° reta");
        System.out.print("Valor de a: ");
        a1 = input.nextDouble();
        System.out.print("Valor de b: ");
        b1 = input.nextDouble();
        System.out.println("CCoeficiente da 2° reta");
        System.out.print("Valor de a: ");
        a2 = input.nextDouble();
        System.out.print("Valor de b: ");
        b2 = input.nextDouble();
        /*
         Temos duas retas com as equações:
y = a1 * x + b1 
y = a2 * x + b2
Como queremos verificar a intersecção, fazemos y(reta1) = y(reta2) onde teremos:
a1 * x + b1 = a2 * x + b2 
Isolando o valor de x temos:
 x = ( b2 - b1 ) / (a1 - a2)
Se a1 == a2 teremos um erro (divisão por zero), o que indica que as retas são paralelas (não têm intersecção).
Utilizaremos o valor de x em alguma das equações acima:
y = a1 * x + b1
*/
        x= (b2-b1)/(a2-a1);
        y= a1*x+b1;
       if(a1==a2){
           System.out.println("Não existe ponto de intersecção");
       }else{
           System.out.println("Ponto de intersecção: ("+x+" , "+y+")");
       }
    }
}
         
        
        
           
           
           1 curtida
         
         
            
            
          
       
      
        
        
          Ok, você mudou o formato de entrada. Ao invés de fornecer os pontos, está fornecendo agora no formato y = mx + b
Assim fica bem mais fácil mesmo. 
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          [quote=ViniGodoy]Ok, você mudou o formato de entrada. Ao invés de fornecer os pontos, está fornecendo agora no formato y = mx + b
Assim fica bem mais fácil mesmo. :)[/quote]
Isto correto
não me atentei ao enunciado do exercício onde era preciso ler apenas os coeficientes a1 ,b1 e a2 ,b2
não tinha a necessidade de ler as coordenadas dos pontos que formam a reta…
falta de atenção essa minha hehehehhe  
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Um detalhe que pode ser melhorado:
x= (b2-b1)/(a2-a1);  
y= a1*x+b1;  
if(a1==a2){  
        System.out.println("Não existe ponto de intersecção");  
Você primeiro faz a conta e depois verifica se existe a situação excepcional (divisão por zero). É mais correto checar primeiro as condições necessárias para que a solução exista (no caso, as retas terem coeficientes angulares diferentes) e só depois fazer o cálculo.
Inclusive dependendo da situação isso pode estourar uma exceção (por exemplo se estiver trabalhando com inteiros a tentativa de dividir por zero dá uma ArithmeticException).
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          [quote=gomesrod]Um detalhe que pode ser melhorado:
x= (b2-b1)/(a2-a1);  
y= a1*x+b1;  
if(a1==a2){  
        System.out.println("Não existe ponto de intersecção");  
Você primeiro faz a conta e depois verifica se existe a situação excepcional (divisão por zero). É mais correto checar primeiro as condições necessárias para que a solução exista (no caso, as retas terem coeficientes angulares diferentes) e só depois fazer o cálculo.
Inclusive dependendo da situação isso pode estourar uma exceção (por exemplo se estiver trabalhando com inteiros a tentativa de dividir por zero dá uma ArithmeticException).[/quote]
como eu poderia fazer isso? sou iniciante no java
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          É só colocar as contas no else.
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          
Ok !!! ja testei aqui e rodou beleza vlw!!!