Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2011, 16h22   #1
Candidat au titre de Membre du Club
 
Vincent
Étudiant
Inscription : mars 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Vincent

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2010
Messages : 43
Points : 13
Points : 13
Par défaut Fonction de calcul de couleurs

Bonjour à tous,

Pour les besoins de traitement de données, je crée des graphiques qui sont représentés sur un axe x-y mais chaque point à sa couleur unique.

Cette couleur est définie par la valeur de ce point.
La couleur rouge va représenter le point de plus haute valeur, et la couleur bleue celle de plus petite couleur.

Les valeurs situées à la moitié environ seront représentés par la couleur verte.

Je cherche donc à calculer la couleur exacte pour environ 4000 points.
Actuellement, j'ai cette fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function datatocolor($min, $max, $value)
{
	//var v = 256*256*r + 256*g + b;
	$half = (($min + $max) / 2);
 
	if ($value > $half)
	{
		$r = (255 * ($value+$min-$half)) / $half;
		$g = 255 - $r;
		$b = 0;
	} 
	else {
		$b = (255 * ($half-$value+$min)) / $half;
		$g = 255 - $b;
		$r = 0;			
	}
	$color = array(intval($r), intval($g),  intval($b));
	return $color;
}
Mais, après avoir chargé 4000 données avec des valeurs entre 6 et 20, et relativement linéaires, je n'obtiens que du bleu et du rouge. Alors que je devrai avoir du vert certaines fois ....

Ca doit être simple ... Mais je bloque un peu.
Merci d'avance pour tout éclaircissement
peephole83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 16h53   #2
Membre confirmé
 
Avatar de sayari.dev
 
Homme Marouen Sayari
Développeur Web
Inscription : mai 2010
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Marouen Sayari
Localisation : Algérie

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2010
Messages : 142
Points : 225
Points : 225
Bonjour,

Essaye ce bout de code


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function datatocolor($min, $max, $value){
	$half = ($min + $max) / 2;
 
	if ($value > $half){
		$r = 255 * ($value - $half) / $half;
		$g = 255 - $r;
		$b = 0;
	} 
	else{
		$b = 255 * ($half - $value) / $half;
		$g = 255 - $b;
		$r = 0;			
	}
	$color = array(intval($r), intval($g),  intval($b));
	return $color;
}
Tu omets le (+ $min).
__________________
C'est en faisant n'importe quoi qu'on devient n'importe qui
sayari.dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 16h14   #3
Candidat au titre de Membre du Club
 
Vincent
Étudiant
Inscription : mars 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Vincent

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2010
Messages : 43
Points : 13
Points : 13
Merci pour ta réponse, mais avec le min ça marchait plus ou moins mieux.

Par contre, en fait ce que je désire obtenir c'est les couleurs de l'arc-en-ciel, du type :
http://www.trovster.com/css/img/header.colour.3.png

Je cherche un algorithme / fonction qui puisse me retourner un tableau de couleur qui correspond à ce gradient...

Il faut un peu compléter ma fonction j'imagine, mais je suis vraiment perdu.

peephole83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h23.


 
 
 
 
Partenaires

Hébergement Web