Et je me demande surtout comment tu as pu arriver à générer de telles images en php.
Un exemple vaudra mieux que mille discours
<?php
$w = 500;
$h = 500;
$zoom = 120;
$t = M_PI/2;
$ct = cos($t);
$st = sin($t);
$im = imagecreatetruecolor($w, $h);
for ($x = 0; $x < $w; $x++)
{
for ($y = 0; $y < $h; $y++)
{
$zx = ($x-250)/$zoom;
$zy = -($y-250)/$zoom;
$rx = $zx * $ct - $zy * $st;
$ry = $zy * $ct + $zx * $st;
$zx = $rx;
$zy = $ry;
$r = sqrt(abs($zx * $zx - $zy * $zy));
$cr = 127.5 * abs(sin($r)) + 127.5 * abs(cos($r*2));
$cg = 255 * abs(cos($cr));
$cb = 255;
imagesetpixel($im, $x, $y, imagecolorallocate($im, $cr, $cg, $cb));
}
}
header('Content-type: image/jpeg');
imagejpeg($im);
?>
L’idée, c’est pour chaque pixel de l’image, calculer un nombre spécifique dépendant des coordonnées du pixel. Avec ce nombre, si on le calcule "plus ou moins bien", on l’impose en coefficient de l’intensité d’une couleur et cette dernière prends la ""forme"" du coefficient, d’où le résultat.
Je parle dans un langage très amateur, et d’ailleurs je ne pourrai pas t’expliquer pourquoi telle formule donne telle résultat… on teste différentes combinaisons et on voit ce que ça donne
Ici, ($x, $y)
désigne les coordonnées d’un pixel dans le repère initial de l’image.
($zx, $zy)
désigne les coordonnées d’un pixel dans le repère Z, repère centré au milieu de l’image afin de profiter d’un effet de symétrie.
$zoom
permet un zoom sur le repère Z (et heureusement car on travaille dedans ^^).
Après, rien de tout ça n’est très propre ni… professionnel xD
EDIT :
Le repère R est défini à partir du repère Z dont on a effectué une rotation d’un angle $t
autour du milieu de l’image. ($rx, $ry)
représente les coordonnées d’un point dans le repère R.
Et j’ajouterais aussi quelque chose d’important : un pixel donné aura toujours la même position dans l’image, peut importe le repère avec lequel on travaille. ça paraît évident mais ça m’a causé souci hier pendant au moins une heure !!
C’est ce qui explique que pour certaines images, elles produiront le même résultat dans le repère R ou Z si le résultat est invariant par rotation (autrement dit si $rx² + $ry² = $zx² + $zy²
) oui même pas en fait, j’ai du mal à expliquer.
J’avais introduit ce repère pour ré-orienter certaines images, ce qui ne fonctionne pas toujours.
Bref… bon amusement