Intersecção entre retas  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
julianofischer
JavaGuru
[Avatar]

Membro desde: 05/12/2007 20:05:51
Mensagens: 209
Offline

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?

This message was edited 1 time. Last update was at 25/06/2008 00:30:02

rmendes08
JWizard
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 2543
Offline

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.

This message was edited 1 time. Last update was at 25/06/2008 07:09:06


Canal do GUJ no IRC:
/server irc.vircio.org -j #java

Computadores Fazem Arte


calculadora com Javascript


http://www.uaijug.com.br

Twitter:
@rodolfo_mmendes
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

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...

Cássio Marques

Blog
julianofischer
JavaGuru
[Avatar]

Membro desde: 05/12/2007 20:05:51
Mensagens: 209
Offline

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...


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.

This message was edited 1 time. Last update was at 25/06/2008 08:44:01

marcelo.sairaf
HelloWorld

Membro desde: 28/10/2007 16:52:17
Mensagens: 13
Offline

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

Marcelo Farias
Blog
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3206
Localização: Rio de Janeiro
Offline

julianofischer wrote: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?


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

This message was edited 1 time. Last update was at 12/08/2008 17:54:02


http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
julianofischer
JavaGuru
[Avatar]

Membro desde: 05/12/2007 20:05:51
Mensagens: 209
Offline

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.
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team