Calcular intersección de dos Rectas en PHP GD

Estoy intentando realizar una fórmula para hallar la intersección de dos segmentos dibujado en la librería GD de PHP.

function intersection ( $ax1, $ay1, $ax2, $ay2, $bx1, $by1, $bx2, $by2 ) {
$a1 = $ay2 - $ay1;
$b1 = $ax1 - $ax2;
$c1 = ( $a1 * $ax1 ) + ( $b1 * $ay1 );
$a2 = $by2 - $by1;
$b2 = $bx1 - $bx2;
$c2 = ( $a2 * $bx1 ) + ( $b2 * $by1 );
$x = ( $b2 * $c1 ) - ( $b1 * $c2 );
$y = ( $a1 * $c2 ) - ( $a2 * $c1 );
return array ( 'x' => $x, 'y' => $y );
}

Esta seria la funcion que he realizado. Pero a la hora de introducir los datos, no me devuelve la posición correcta de la intersección.

$cb = intersection( 0, 163, 123, 256, 0, 133, 93, 256 );

El valor devuelto es: X: 343170; Y: 1315710;

Algo que se sale. ¿Dónde esta el fallo?

1 Respuesta

Respuesta
1
function intersection ( $ax1, $ay1, $ax2, $ay2, $bx1, $by1, $bx2, $by2 ) {
$ma = ($ay2-$ay1)/($ax2-$ax1); // Pendiente de la recta a
$mb = ($by2-$by1)/($bx2-$bx1); // Pendiente de la recta b
$ba = ($ay1-($ma*$ax1)); // Hallar b Ec1 ->> y = mx + b  ->> b = y - mx   (Intercepto)
$bb = ($by1-($mb*$bx1)); // Hallar b Ec2 ->> y = mx + b  ->> b = y - mx   (Intercepto)
$x = ($bb-$ba)/($ma-$mb);
$y = ($ma*$x)+$ba;
return array ( 'x' => $x, 'y' => $y );
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas