Générateur de spirale

Description

Ce programme sert... à générer des "spirales lumineuses". L?intérêt est très minime, j'ai codé ça plus par envie de faire un truc sympa et inutile

Le programme utilise la librairie GD2

Source / Exemple :


<?php
function spirale($docwidth, $docheight, $totalnum, $rotations, $outerradius, $innerradius, $back_red, $back_green, $back_blue, $valr, $valg, $valb)
{
	header ("Content-type: image/png");
	$img = imagecreatetruecolor ($docwidth, $docheight) or die ("Impossible de crée un flux d'image GD");
	$background = imagecolorallocate($img, $back_red, $back_green, $back_blue);
	imagefilledrectangle($img, 0, 0, $docwidth, $docheight, $background); 
	$radiusspan = $outerradius - $innerradius;
	for ($n=0; $n<$totalnum; $n++){
		$radians = ($n/$totalnum)*(2*pi())*$rotations;
		$currentradius = $innerradius + $radiusspan*(1- ($n/$totalnum));
		$x = $docwidth/2 + ($currentradius * cos($radians));
		$y = $docheight/2 + ($currentradius * sin($radians));
		$augment = 40*($n/$totalnum);
		CreerPoint($img, $x, $y, $augment, $valr, $valg, $valb);
	}
	imagepng ($img);
	imagedestroy ($img);
}

function CreerPoint($img, $x, $y, $augment, $valr, $valg, $valb)
{

	for($i=$augment; $i>=1; $i--)
	{
		for($tx=$x-$i; $tx<=$x+$i;$tx++)
		{
			for($ty=$y-$i; $ty<=$y+$i;$ty++)
			{
				$ray = sqrt((($tx-$x)*($tx-$x))+(($ty-$y)*($ty-$y)));
				if($ray<=$i)
				{
					//Recupération de la couleur de fond
					$rgb = ImageColorAt($img, $tx, $ty);
					$r = ($rgb >> 16) & 0xFF;
					$g = ($rgb >> 8) & 0xFF;
					$b = $rgb & 0xFF;
		
					//Augmentation de la luminosité
					$lumi_r = ($valr/$augment)+$r;
					$lumi_g = ($valg/$augment)+$g;
					$lumi_b = ($valb/$augment)+$b;
					if($lumi_r > 255)
					{
						$lumi_r = 255;
					}
					if($lumi_r < 0)
					{
						$lumi_r = 0;
					}
					if($lumi_g > 255)
					{
						$lumi_g = 255;
					}
					if($lumi_g < 0)
					{
						$lumi_g = 0;
					}
					if($lumi_b > 255)
					{
						$lumi_b = 255;
					}
					if($lumi_b < 0)
					{
						$lumi_b = 0;
					}
	
					//Reconstruction de la couleur
					$color = imagecolorallocate ($img, $lumi_r, $lumi_g, $lumi_b);
		
					//Dessin du cercle
					imagesetpixel ($img, $tx, $ty, $color);
				}
			}
		}
	}
}
	
	if($form == "" || $form == null)
	{
		echo '
		<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
		<html>
		<head>
		<title>Générateur de Spirale Lumineuse</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		</head>
		
		<body>
		<form action="spirale.php" method="post">
		<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
		  <tr>
			<td width="29%">Nombre de Spot</td>
			<td width="71%"><input name="nombre_spot" type="text" value="100"></td>
		  </tr>
		  <tr>
			<td>Nombre de Rotations</td>
			<td><input name="rotations" type="text" value="3"></td>
		  </tr>
		  <tr>
			<td>Radius Externe</td>
			<td><input name="radius_externe" type="text" value="200"></td>
		  </tr>
		  <tr>
			<td>Radius Interne</td>
			<td><input name="radius_interne" type="text" value="50"></td>
		  </tr>
		  <tr>
			<td>Couleur de Fond</td>
			<td>R: 
			  <input name="fond_rouge" type="text" value="0" size="5" maxlength="3"> 
			  V: 
			  <input name="fond_vert" type="text" value="0" size="5" maxlength="3"> 
			  B: 
			  <input name="fond_bleu" type="text" value="50" size="5" maxlength="3">
		</td>
		  </tr>
		  <tr>
			<td>Couleur de Lumière</td>
			<td>R:
			  <input name="lumiere_rouge" type="text" value="200" size="5" maxlength="3">
		V:
		<input name="lumiere_vert" type="text" value="255" size="5" maxlength="3">
		B:
		<input name="lumiere_bleu" type="text" value="200" size="5" maxlength="3">
		<input type="hidden" name="form" value="send"></td>
		  </tr>
		  <tr>
			<td colspan="2"><input type="submit" name="Submit" value="Envoyer"> [ Attention! la génération de l\'image prend plusieurs secondes ]</td>
		  </tr>
		</table>
		</form>
		</body>
		</html>';
	}
	else
	{
		spirale(500, 500, $nombre_spot, $rotations, $radius_externe, $radius_interne, $fond_rouge, $fond_vert, $fond_bleu, $lumiere_rouge, $lumiere_vert, $lumiere_bleu);
	}
?>

Conclusion :


Il n'y a pas de gestions des erreurs (enfin, très peu).
De plus, j'ai mis une petite interface de test directement dans le code

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (The_Wide_World)