AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Sources des fonctions colors

Aller en bas 
AuteurMessage
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sources des fonctions colors Empty
MessageSujet: Sources des fonctions colors   Sources des fonctions colors EmptyMar 8 Déc 2009 - 20: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 - 20:02, édité 8 fois
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMar 8 Déc 2009 - 21:19

Je ne savais même pas comment etait fait les couleurs sur game maker, c'est bien fait !

_________________
GLEngine, la génération procédurale avancée !
Image:
 
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
bibi675
Utilisateur confirmé: Rang *****
bibi675

Messages : 2456
Localisation : Oise
Projet Actuel : Jeu par navigateur original

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMar 8 Déc 2009 - 21:54

Mais tu t'ennuies vraiment toi. noel
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. ^^

_________________
Sources des fonctions colors 1005394
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas

Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense Sources des fonctions colors Panicpr9

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 9 Déc 2009 - 13: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 super

_________________
Blithe ND Blog

Blithe ND Free Textures

Blithe ND Website
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 9 Déc 2009 - 14:24

happy1 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; !
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439

Messages : 2634
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 9 Déc 2009 - 15: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 super
Ouais, en fait t'es Mr.Script :p

_________________
Cliquez pour accéder aux topics dédiés !
Sources des fonctions colors I4AWwEs    Sources des fonctions colors CaVn0FN
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 9 Déc 2009 - 18:09

Mr Script pour vous servir :p_lol:
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439

Messages : 2634
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 9 Déc 2009 - 18:11

onilink_ a écrit:
Mr Script pour vous servir :p_lol:
"Mr.Script, sa magie c'est son intelligence"
harpe

_________________
Cliquez pour accéder aux topics dédiés !
Sources des fonctions colors I4AWwEs    Sources des fonctions colors CaVn0FN
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyDim 27 Juin 2010 - 20:04

Le CBNA Mise a jour du topic, ajout de l'explication du fonctionnement RGB, et bientot HSV

_________________
Sources des fonctions colors Runningpotato1Sources des fonctions colors TvF6GED
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer

Messages : 6936
Projet Actuel : Bataille de cake au fruits

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyDim 27 Juin 2010 - 20:21

quand tu connais les masques et décalages, ca aide pas mal à comprendre n'empèche gnii

_________________
Sources des fonctions colors Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
Topaze22
*Excellent utilisateur*
Topaze22

Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors EmptyMer 14 Juil 2010 - 9: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.
Sources des fonctions colors Projet13
Revenir en haut Aller en bas
Contenu sponsorisé




Sources des fonctions colors Empty
MessageSujet: Re: Sources des fonctions colors   Sources des fonctions colors Empty

Revenir en haut Aller en bas
 
Sources des fonctions colors
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Sources de la Grande Guerre
» Retour aux sources de Lanza del Vasto
» Seuil d'exemption sources radioactives médicales
» Récupération des sources du CEA
» Lieu de stockage des sources radioactives

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: