GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Intersecção entre retas


#1

Olá pessoal,
gostaria de saber uma forma de descobrir se duas retas se cruzam em alguma parte,
alguém pode dar uma dica de algum método ou algoritmo?
Java possui alguma classe Reta?


#2

Calcule o coeficiente angular das duas retas e compare-os. Se eles forem iguais, as retas são paralelas, caso contrário elas se cruzam em um único ponto. Para o caso das retas paralelas, você deve testar ainda se elas são coincidentes ou não. Se elas forem coicidentes então todos os pontos da reta A pertencem à reta B e vice-versa.


#3

Existe um problema aqui: você quer saber se duas retas se cruzam ou se dois segmentos de reta se cruzam?
Se forem duas retas, ai funciona como nosso amigo disse ai em cima, calcule o coeficiente angular das retas e se forem diferentes elas se cruzam em algum ponto.
Agora, se forem segmentos de reta, não necessariamente eles se cruzam, mesmo que os coeficientes angulares sejam diferentes...


#4

Bem observado Cassio, são dois segmentos de reta, então não pode ser como o rmendes sugeriu. Mesmo assim, obrigado rmendes.
A maneira que eu encontrei foi verificar se um ponto está a direita e o outro a esquerda da reta.


#5

Ai Juliano, eu to precisando implementar isso ai da esqueda e direita. Como foi que vc fez?
Agradeço desde já.


#6

Y1(X) = A1 X + B1
Y2(X) = A2 X + B2

se essas retas se cruzarem, sera num ponto x e y comum. Partindo de um ponto Xc (comum) tempos

Y1(Xc) = Y2(Xc), ou seja

A1 Xc + B1 = A2 Xc + B2

(A1 - A2) Xc = B2 - B1, que é

Xc = (B2 - B1)/ (A1 - A2) , se A1 == A2 as retas são paralelas e nunca se encontram nesse plano da existência

Basta colocar esse valor na equação das retas e vai ter o mesmo valor de Y comum, que é o ponto X,Y onde se encontram!!!

Add:
http://pt.wikipedia.org/wiki/Entes_Geom%C3%A9tricos_Fundamentais


#7

Bom pessoal, resolvi meu problema utilizando a classe Line2D que já implementa um método intersects(l Line2D), ou seja, ficou muito fácil.
Obrigado peczenyj, marcelo, cassio e rmendes.


#8