Olá pessoal,
Alguém conhece uma classe ou método que retorna uma classe Point,
contendo a interseção de duas retas ?
public Point getIntersec
( Point reta1_inic, Point reta1_fim, Point reta2_inic, Point reta2_fim)
Obrigado,
Evandro :oops:
Olá pessoal,
Alguém conhece uma classe ou método que retorna uma classe Point,
contendo a interseção de duas retas ?
public Point getIntersec
( Point reta1_inic, Point reta1_fim, Point reta2_inic, Point reta2_fim)
Obrigado,
Evandro :oops:
Olá,
Não sei se existe na api do java… mas isto não é difícil fazer… é algo mais ou menos assim:
class Ponto {
public double x;
public double y;
public Ponto(double x, double y) {
this.x = x;
this.y = y;
}
public Ponto(Ponto p) {
this.x = p.x;
this.y = p.y;
}
public Ponto() {
}
}
public static Ponto getInterseccao(Ponto r1I, Ponto r1F, Ponto r2I, Ponto r2F) {
Ponto r = new Ponto();
// http://astronomy.swin.edu.au/~pbourke/geometry/lineline2d/
// 1 = r1I
// 2 = r1F
// 3 = r2I
// 4 = r2F
// Numerador
double na = (((r2F.x - r2I.x) * (r1I.y - r2I.y)) - ((r2F.y - r2I.y) * (r1I.x - r2I.x)));
double nb = (((r1F.x - r1I.x) * (r1I.y - r2I.y)) - ((r1F.y - r1I.y) * (r1I.x - r2I.x)));
// Denominador
double da = (((r2F.y - r2I.y) * (r1F.x - r1I.x)) - ((r2F.x - r2I.x) * (r1F.y - r1I.y)));
double db = (((r2F.y - r2I.y) * (r1F.x - r1I.x)) - ((r2F.x - r2I.x) * (r1F.y - r1I.y)));
double ua = na / da;
double ub = nb / db;
// Se elas são paralelas ou coincidentes
if (da == 0 && db == 0) {
if (na == 0 && nb == 0) {
// Coincidentes
return null;
}
// Paralelas
return null;
}
r.x = r1I.x + ua * (r1F.x - r1I.x);
r.y = r1I.y + ub * (r1F.y - r1I.y);
return r;
}
Espero ter ajudado…
Abraços…
Valeu mesmo, obrigado.
Tem um pequeno erro no código que pode ser concertado com:
pontoInterseccao.x = p1.x + ua * (p2.x - p1.x);
pontoInterseccao.y = p1.y + ua * (p2.y - p1.y);// <----