Comment puis-je calculer un quatre dégradé de couleur?
Si j'ai quatre couleurs (A, B, C & D) sur les quatre coins d'un carré et je veux remplir un carré avec un dégradé qui se fond parfaitement entre les quatre couleurs comment puis-je calculer la couleur du point E?
Le plus proche de E est à l'un des autres points, la forte que la couleur devrait affecter le résultat.
Aucune idée de comment faire cela? La vitesse et la simplicité est préféré à l'exactitude.
couleurs http://rabien.com/image/colours.png
OriginalL'auteur Roland Rabien | 2009-07-09
Vous devez vous connecter pour publier un commentaire.
La meilleure solution quand un dégradé entre deux couleurs, est d'utiliser le Le HSV représentation (Teinte Saturation Valeur).
Si vous avez le HSV valeurs de deux couleurs, vous venez de faire l'interpolation linéaire de H, S et V, et vous avez de jolies couleurs (interpolation dans l'espace RVB toujours mener à de "mauvais" résultats).
Vous trouverez également ici les formules à aller de RVB à HSV et de HSV RVB, respectivement.
Maintenant, pour votre problème avec les quatre coin, vous pouvez faire une combinaison linéaire des quatre H/S/V valeurs, pondérée par la distance de E pour que les quatre points A,B,C et D.
EDIT: même méthode que tekBlues, mais dans le HSV de l'espace (il est assez facile de le tester en RGB et HSV espaces. Et vous allez voir les différences. Dans le HSV, vous venez de tourner autour de la chromatique cylindre, et c'est pourquoi il donne belle suite)
EDIT2: si vous préférez la rapidité et de la simplicité", vous pouvez utiliser un L1-norme, au lieu d'une L2-norm (norme euclidienne)
Donc, si
a
est la taille de votre carré et les coordonnées de vos points sont Un(0
,0
), B(0
,a
), C(a
,0
), D(a
,a
), puis la Teinte d'un point de E(x
,y
) peut être calculée avec:où
Hue(A)
est la Teinte d'Un point,Hue(B)
la Teinte de B, etc...Vous appliquer les mêmes formules pour la Saturation et la Valeur.
Une fois que vous avez la Teinte/Saturation/Valeur de votre point E, vous pouvez le transformer dans l'espace RVB.
La combinaison de la méthode ci-dessus est également connu comme "bi-interpolation linéaire". Vous effectuez cette séparément sur H, S, V et les valeurs.
OriginalL'auteur ThibThib
Découvrez ce site, ce qui donne un visuel démo de @ThibThib dans son commentaire que "les gradients dans le HSV sera plus satisfait":
http://www.perbang.dk/rgbgradient/
Il s'agit d'un dégradé créateur qui permettra de créer et de montrer à la FOIS un dégradé RVB et un HSV dégradé.
Si vous essayez de 9 étapes de FFAAAA à AAFFAA (lumière rouge au vert), vous obtiendrez une belle transition par le biais de la lumière jaune, et le HSV et RVB sont similaires.
Mais essayez de 9 étapes de FF0000 à 00FF00 (en gras et en rouge au vert), et vous verrez le RVB une transition par le biais d'un dégoûtant brun verdâtre. Le HSV dégradé, cependant, les transitions entre les gras jaune.
OriginalL'auteur Dan H
La couleur pour le point E est la combinaison de Rouge /Vert /Bleu. Calculer, pour chaque couleur de l'axe de la moyenne de la même couleur axe pour A,B,C,D, ponderating par la distance.
distance_a = sqrt((xa-xe)^2+(ya-ye)^2)
distance_b = ....
sum_distances = distance_a + distance_b ...
rouge = (red_adistance_a + red_bdistance_b ... ) /sum_distances
color_E = ColorFromARgb(rouge,vert,bleu)
OriginalL'auteur tekBlues