| Sources des fonctions colors | |
|
|
Auteur | Message |
---|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Sources des fonctions colors Mar 8 Déc 2009 - 21:24 | |
| Ici je vais donner les sources des fonctions qui touchent aux couleurs pour les curieux : N'hésitez pas a demander si vous connaissez d'autres fonctions qui touchent aux couleurs si vous voulez leurs source. En physique, la lumière blanche est composée des trois couleurs primaires de la lumière : Le rouge, le vert et le bleu. Avec ces trois couleurs, il est possible de créer une infinité de couleurs. En informatique, une couleur est représentée par un nombre entier positif compris entre 0 et 16777215 (le noir et le blanc), soit 0x000000 et 0xFFFFFF en hexadécimal. Ce qui nous donne 256 valeurs possibles pour chaque composantes d'une couleur. Chaque composante tient donc sur octet de mémoire, une couleur prend donc trois octets. Dans l'octet de poids fort est stocké le bleu, dans celui du milieu le vert et dans celui de poids faible le rouge. On a donc : [BLEU][VERT][ROUGE] Récupérer la composante rouge d'une couleur reviens donc à récupérer la valeur contenue par l'octet de poids faible. Il faut donc l'isoler, ce qui est simple en utilisant l'opérateur binaire de comparaison and (&). Cela nous donne le code qui suit : color_get_red - Code:
-
return argument0 & $FF
Recuperer la composante la composante verte signifie récupérer l'octet du milieu. Pour l'isoler on va d'abord décaler les bits vers la droite d'un octet, afin de pouvoir ensuite l'isoler avec un and. color_get_green - Code:
-
return (argument0 >> 8) & $FF
Pour récupérer la tonalité bleu qui est stockée dans l'octet de poids fort, il suffit de faire un décalage binaire de deux octets vers la droite. color_get_blue - Code:
-
return argument0 >> 16
Fabriquer une couleur a partir des trois tonalités RGB (Red Green Blue) reviens a placer chaque composante dans l'octet qui doit lui être assigné. On met donc le rouge dans le première octet, le vert dans le second grâce a un décalage binaire d'un octet vers la gauche, et le bleu dans le plus a gauche en le décalant de deux octets. make_color_rgb - Code:
-
return (argument2<<16) + (argument1<<8) + argument0
Il existe une autre manière plus complexe pour créer une couleur, c'est la méthode HSV (Hue Saturation Valu) soit Teinte Saturation Valeur en Français. Comme la précédente, la couleur tiendras sur 3 octet (généralement). J'expliquerais bientôt le système HSV, donc patience... color_get_hue - Code:
-
c = argument0
r = c & 255 g = (c>>8) & $FF b = c>>16
cmin = min(r,g,b) cmax = max(r,g,b)
if (cmax==0) return 0
d = cmax-cmin
if (r==cmax) h=(g-b)/d else if (g==cmax) h=2+(b-r)/d else h=4+(r-g)/d h*=60 if (h<0) h+=360
return floor(h*255/360)
color_get_saturation - Code:
-
c = argument0 r = c & 255 g = (c>>8) & $FF b = c>>16
cmin = min(r,g,b) cmax = max(r,g,b)
if(cmax != 0) return (cmax-cmin)*255/cmax return 0
color_get_value - Code:
-
c = argument0 r = c & 255 g = (c>>8) & $FF b = c>>16
return max(r,g,b)
make_color_hsv - Code:
-
h = argument0 s = argument1 v = argument2
r = min(255,max(510-min(h ,255-h)/42.5*255,0))/255*v g = min(255,max(510-max(85-h ,h-85 )/42.5*255,0))/255*v b = min(255,max(510-max(170-h,h-170)/42.5*255,0))/255*v
r = floor( r+(v-r)*(1-s/255) ) g = floor( g+(v-g)*(1-s/255) ) b = floor( b+(v-b)*(1-s/255) )
return r + (g<<8) + (b<<16)
merge_color(col1,col2,amount) - Code:
-
var r,g,b,col1,col2,amount; col1 = argument0 col2 = argument1 amount = argument2
r = (col1 & $FF)*(1 - amount) + (col2 & $FF)*amount; g = ((col1 & $FF00) >> 8)*(1 - amount) + ((col2 & $FF00) >> 8)*amount; b = (col1 >> 16)*(1 - amount) + (col2 >> 16)*amount; g = floor(g<<8) b = floor(b<<16) return floor(r+g+b)
Voila ! Si y en a qui voulaient les refaire pour un autre langage ^^
Dernière édition par onilink_ le Dim 27 Juin 2010 - 22:02, édité 8 fois |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Sources des fonctions colors Mar 8 Déc 2009 - 22:19 | |
| Je ne savais même pas comment etait fait les couleurs sur game maker, c'est bien fait ! |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Sources des fonctions colors Mar 8 Déc 2009 - 22:54 | |
| Mais tu t'ennuies vraiment toi. Nan, j'déconne, c'est hallucinant la facilité que tu as à coder tous ces scripts mathématiques aussi rapidement et aussi proprement. On a trouvé notre génie. ^^ _________________ |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Sources des fonctions colors Mer 9 Déc 2009 - 14:35 | |
| +1 bibi Encore une fois, chapeau, même si ces scripts ne seront pas utiles à utiliser, c'est vraiment hyper intéressant de voir comment tu les as programmés, alors merci beaucoup |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Sources des fonctions colors Mer 9 Déc 2009 - 15:24 | |
| MERCI Sinon je pense que leur utilité n'est en fait que pour ceux qui utilisent du C ou C++, la ça peut être utile ^^, en tout cas moi je les utilises dans mes projets cpp; ! |
|
| |
Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: Sources des fonctions colors Mer 9 Déc 2009 - 16:55 | |
| - nicoulas a écrit:
- +1 bibi
Encore une fois, chapeau, même si ces scripts ne seront pas utiles à utiliser, c'est vraiment hyper intéressant de voir comment tu les as programmés, alors merci beaucoup Ouais, en fait t'es Mr.Script :p _________________ Cliquez pour accéder aux topics dédiés ! |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Sources des fonctions colors Mer 9 Déc 2009 - 19:09 | |
| Mr Script pour vous servir :p_lol: |
|
| |
Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: Sources des fonctions colors Mer 9 Déc 2009 - 19:11 | |
| - onilink_ a écrit:
- Mr Script pour vous servir :p_lol:
"Mr.Script, sa magie c'est son intelligence" _________________ Cliquez pour accéder aux topics dédiés ! |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Sources des fonctions colors Dim 27 Juin 2010 - 22:04 | |
| Mise a jour du topic, ajout de l'explication du fonctionnement RGB, et bientot HSV |
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: Sources des fonctions colors Dim 27 Juin 2010 - 22:21 | |
| quand tu connais les masques et décalages, ca aide pas mal à comprendre n'empèche _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
| |
Topaze22 *Excellent utilisateur*
Messages : 6213 Localisation : Sur la Lune Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World
| Sujet: Re: Sources des fonctions colors Mer 14 Juil 2010 - 11:41 | |
| Clair et efficace, c'est sympa de partager, même si je ne m'en servirais pas ^^ _________________ Topique pour le Projet Hello Mario en préparation. Sorti du topique lorsque la première démo sera disponible.
|
|
| |
Contenu sponsorisé
| Sujet: Re: Sources des fonctions colors | |
| |
|
| |
| Sources des fonctions colors | |
|