Bonjour les zestes !
Je cherche à dessiner un disque de rayon fixé dont la couleur intérieure est linéairement dépendante de la distance au centre du disque.
Dans une image, la numérotation des pixels est telle que le pixel (0, 0) se situe en haut à gauche.
Pour dessiner un disque centré en (0, 0) et dessiné au milieu de l’image, je calcule un nouveau repère q.
Dans ce repère :
xq=x−largeur_image
yq=y−hauteur_image
À ma grande surprise, le résultat est très bizarre sur la droite :
Code source :
<?php
$width = 600;
$height = 350;
$im = imagecreatetruecolor($width, $height);
for ($x = 0; $x < $width; $x++)
{
for ($y = 0; $y < $height; $y++)
{
// On place le point (0, 0) au centre de
// l'image, ce qui donne le repère q.
$qx = $x - $width/2;
$qy = $y - $height/2;
// $d : distance d'un point par apport
// au centre (0, 0) dans le repère q
$d = sqrt($qx*$qx + $qy*$qy);
if ($d < 208.4) // 0 ≤ $d ≤ 347.4
{
// Colorie un pixel en rouge d'intensité
// linéairement dépendante de $d
$color = imagecolorallocate($im, $d, 0, 0);
// Trace une ligne de ($x, $y) au milieu de l'image
imageline($im, $width/2, $height/2, $x, $y, $color);
}
}
}
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
Où pourrait se cacher l’erreur ?
+0
-0