Parcourir la source

ajout de la méthode spirale

master
MEUNIER Thibaud il y a 6 ans
Parent
révision
4455798ad8
1 fichiers modifiés avec 135 ajouts et 0 suppressions
  1. +135
    -0
      methode2/spirale/draw.php

+ 135
- 0
methode2/spirale/draw.php Voir le fichier

@ -0,0 +1,135 @@
<?php
function DrawBlock($the_block, $vImage, $parametres)
{
// valeurs par défaut
$type = 1;
// Ces variables vont permettre de caler les lignes
// dans la zone de dessin en se laissant des marges
// en haut et en bas
$somme = 0;
$min =-1;
$max = 0;
$marge_x = 10;
$marge_y = 10;
$facteur_max = 2.5;
$alpha = 0;
// Détermine si on dessine les tx, les fees ou la récompense
if (isset($parametres['type'])) $type = $parametres['type'];
// Paramètres de dessin
if (isset($parametres['x'])) $x = $parametres['x'];
if (isset($parametres['y'])) $y = $parametres['y'];
if (isset($parametres['width'])) $width = $parametres['width'];
if (isset($parametres['height'])) $height = $parametres['height'];
if (isset($parametres['font_color'])) $vFgColor = $parametres['font_color'];
if (isset($parametres['background_color'])) $vBgColor = $parametres['background_color'];
if (isset($parametres['font_RGB'])) $vFgRGB = $parametres['font_RGB'];
if (isset($parametres['background_RGB'])) $vBgRGB = $parametres['background_RGB'];
// Je reprends les couleurs de Tyler Hobbs
$couleursRGB=[
[234,220,207],
[197,46,39],
[183,230,214],
[248,200,40],
[51,41,32],
[250,142,41],
[5,37,32],
[233,201,58],
[183,230,214]
];
$couleurs = [];
$nb_couleurs = count($couleursRGB);
for($i=0;$i<$nb_couleurs;$i++)
$couleurs[$i] = imagecolorallocate($vImage,$couleursRGB[$i][0],$couleursRGB[$i][1],$couleursRGB[$i][2]);
// Prendre une des couleurs au hasard comme couleur de fond
shuffle($couleurs);
$fond = $couleurs[0];
shuffle($couleurs);
// Remplir le fond
imagefilledrectangle($vImage, $x+($marge_x/2), $y+($marge_y/2), $x+$width-+($marge_x/2), $y+$height-+($marge_y/2), $fond);
// Récup des données
$data = blockchain::getTransactionData($the_block, $type);
$n_data = count($data);
// Calcul des min max
foreach($data as $v)
{
if ($v['value'] > $max) $max = $v['value'];
if (($v['value'] < $min)||($min == -1)) $min = $v['value'];
$somme += $v['value'];
}
if ($min == $max) $max = $min + 1;
if ($somme == 0) return;
// On commence au centre de l'image
$xc = $x + ($width / 2);
$yc = $y + ($height / 2);
$r = $width / 3;
$cur = 0;
$n = 0;
$x1 = $xc;
$y1 = $yc;
$x2 = $xc;
$y2 = $yc;
// Trouver le max
$max=0;
while(true){
$r1 = 0.05 * $max;
$x2 = $xc + $r1*cos($r1);
$y2 = $yc + $r1*sin($r1);
if (($x2 > $width) || ($x2 < 0)) break;
if (($y2 > $height) || ($y2 < 0)) break;
imageline($vImage, $x1, $y1, $x2, $y2, $couleurs[0]);
$x1 = $x2;
$y1 = $y2;
$max++;
}
$coef = floatval($max) / floatval($somme);
$cur = 0;
$n = 0;
$x1 = $xc;
$y1 = $yc;
$x2 = $xc;
$y2 = $yc;
foreach($data as $transaction)
{
// chaque fois que toutes les couleurs ont été utilisées
// on mélange leur ordre
if (!($n%$nb_couleurs)) shuffle($couleurs);
// S'il n'y a qu'une transaction
// Ou Si la transaction courante représente plus du 5eme de la somme des tx
// On s'interdit la couleur de fond
if (($n_data == 1)||($transaction['value'] > ($somme/5)))
while ($couleurs[$n%$nb_couleurs] == $fond) $n++;
$couleur = $couleurs[$n%$nb_couleurs];
// le segment de couleur est de longueur proportionnelle
// à la valeur de sa transaction
$next = $cur + ($coef*$transaction['value']);
if ($next > $max) $next = $max;
while($cur<$next)
{
$r1 = 0.05 * $cur;
$x2 = $xc + $r1*cos($r1);
$y2 = $yc + $r1*sin($r1);
imageline($vImage, $x1, $y1, $x2, $y2, $couleur);
$x1 = $x2;
$y1 = $y2;
$cur++;
}
$n++;
}
}
?>

Chargement…
Annuler
Enregistrer