Para encontrar o ponto (x,y) que as retas se tocam, montamos um sistema de equação, considerando que o x e o y de ambas as retas são iguais. Logo, precisamos agora encontrar quem é esse x e o y.
bool areIntersect(line l1, line l2, point &p){ // Retas paralelas não se interceptam if (areParallel(l1,l2)) return false; p.x = (-l1.c* l2.b + l1.b*l2.c) / (l2.b*l1.a - l1.b*l2.a); /* Caso uma das linhas seja vertical, então b é 0. Nesse caso, devemos usar a outra linha. Além disso, as duas não podem ser verticais, pois se fossem, elas seriam paralelas e portanto, a função já teria retornado */ if (fabs(l1.b) >EPS) { p.y = -(l1.a * p.x + l1.c) / l1.b; } else { p.y = -(l2.a * p.x + l2.c) / l2.b; } return true;}