Cita:
Iniciado por iovan Yo soy noob :D
La manera mas fácil es hacer segmentos dirigidos entre los 3 vértices respecto a 1 punto y obtener el área utilizando producto cruz, Si el area es igual a 0 se trata de una recta si es diferente se trata de un triangulo.
PHP:
Código PHP:
Ver original<?php
function magnitud($c){
return sqrt( ($c[0]*$c[0])+($c[1]*$c[1])+($c[2]*$c[2]) ); }
function getVector($A,$B){
$cadena = ($B[0] - $A[0]).",".($B[1]-$A[1]).",".($B[2]-$A[2]);
}
function esTriangulo($A,$B,$C){
//¿Es el mismo punto?
$equals = ($A==$B OR $A==$C OR $B==$C) ? true : false;
if($equals) return false;
//Obtengo los puntos
$vector1 = getVector($A, $B);
$vector2 = getVector($A, $C);
$i = $vector1[1]*$vector2[2] - $vector2[1]*$vector1[2];
$j = ($vector1[0]*$vector2[2] - $vector2[0]*$vector1[2])*-1;
$k = $vector1[0]*$vector2[1] - $vector2[0]*$vector1[1];
$area_total = (magnitud
(preg_split("/,/", $i.",".$j.",".$k))/2);
if($area_total==0) return false; else return true;
}
$A = "3,1,4";
$B = "3,3,4";
$C = "3,8,4";
if(esTriangulo($A, $B, $C)) echo "Si es un triangulo";
else echo "No es un triangulo";
?>
Feliz año nuevo un saludo y fuerte abrazo atodos mis amigos de ForosDelWeb. Nos vemos el 3 de Enero. Be Happy everybuddy! Saludos iovan y feliz año nuevo para tí también. Que bueno que te animaste a hacer el reto de los triángulos. Yo lo resolví de esta forma:
Se parte del principio de proporcionalidad que existe entre los puntos de una misma recta.
O sea que si tres puntos (x1,y1) , (x2,y2) y (x3,y3) están alineados, pertenecen a una misma recta,
por lo que hay una relación proporcional entre las diferencias entre las x o las y del dichos punto y
las distancias lineal entre ellos (esto se ilustraría mejor en una gráfica).
Por este principio, si los puntos están alineados se cumple que:
(x2-x1)/distancia(p2:p1)=(x3-x1)/distancia(p3:p1)
donde la distancia($p2:p1) se expresa:
sqrt(pow($x2-$x1,2)+pow($y2-y1,2))
y la distancia($p3:p1) se expresa:
sqrt(pow($x3-$x1,2)+pow($y3-y1,2))
Luego, si se cumple esto es porque los tres puntos están alineados, por lo cual es imposible construir
el triángulo.
La implementación de la función evaluadora:
Código PHP:
Ver originalfunction Triangulo($x1,$y1,$x2,$y2,$x3,$y3){
$result=false;
if(!($x1==$x2 && $y1==$y2) || ($x2==$x3 && $y2==$y3) || ($x3==$x1 && $y3==$y1)){
$result=!(($x1-$x2)/sqrt(pow($x1-$x2,2)+pow($y1-$y2,2))==($x1-$x3)/sqrt(pow($x1-$x3,2)+pow($y1-$y3,2))); }
return $result;
}
Y listo, devuelve true si el triángulo es posible, si no, devuelve false.
Feliz año nuevo para todos.