Fonction de décomposition de la couleur en nuances. - page 20

 
prostotrader:
Tu ne sais pas faire le morpion ?

Avec des gradients et des tons froids ))))

 
Sergey Basov:

Avec des gradients et des nuances cool ))))

Je ne vois pas ce qu'il y a de si drôle. C'est très triste. Cela fait longtemps que le monde crée une forme cool pour une cause inutile, et voilà qu'on se demande encore "pourquoi c'est nécessaire ?". J'avais besoin de rester en contact avec le monde. Sinon, - le monde l'écrasera.

 
Реter Konow:

Je ne vois pas ce qu'il y a de si drôle. C'est très triste. Le monde a longtemps créé une forme cool pour une substance inutile, et ici on se demande toujours "pourquoi en avons-nous besoin ?". J'avais besoin de rester en contact avec le monde. Sinon, - le monde l'écrasera.

Prouvez donc que quelqu'un en a besoin (interface graphique, gradient approprié, nuances, etc.), sur le marché.

Le chat et l'homme y ont fait allusion depuis longtemps ;))

PS. Rien de personnel, j'aime aussi les belles interfaces, mais seulement en tant qu'extras dans MT.

 
Реter Konow:

Je ne vois pas ce qu'il y a de si drôle. C'est très triste. Cela fait longtemps que le monde crée une forme cool pour une cause inutile, et voilà qu'on se demande encore "pourquoi c'est nécessaire ?". J'avais besoin de rester en contact avec le monde. Sinon, - le monde l'écrasera.

Un cafard teint dans toutes les couleurs de l'arc-en-ciel, oui avec des paillettes, ne sera pas écrasé ?

 
Sergey Basov:

Ensuite, il faut prouver que quelqu'un en a besoin (interface graphique, gradient approprié, nuances, etc.

Le chat et l'homme ont fait allusion à cela depuis longtemps ;))

PS. Rien de personnel, j'aime aussi les belles interfaces, mais seulement en tant qu'extras dans MT.

Qui est là ?

 
Реter Konow:

Et à tout cela, je suis venu en observant simplement le comportement des chiffres dans les fenêtres de la palette Windows.

J'utilise une méthode différente. J'incorpore juste la logique basée sur la connaissance.

Et vous ne semblez toujours pas comprendre que nous avons le même algorithme, car il n'y en a pas d'autre. L'algorithme est appelé - fonction linéaire reliant deux points dans l'espace tridimensionnel (x1,y1,z1) et (x2,y2,z2)

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

Seulement pour une raison quelconque, à en juger par votre tout premier message, il vous a fallu un mois pour le créer, et même avec des erreurs, alors que je n'ai même pas eu à inventer quoi que ce soit, car il s'agit manifestement d'un problème simple reliant deux points en trois dimensions (r1,g1,b1) et (r2,g2,b2), que je connais et comprends très bien depuis l'école, pas même au niveau des formules, mais au niveau de la logique. La première réalisation m'a pris environ 15 minutes et le code a fonctionné dès la première (je ne me souviens pas, peut-être dès la deuxième) fois.

J'ai déjà écrit ici que votre algorithme est mis en œuvre en utilisant une fonction plus simple et plus polyvalente comme suit :

   color clr=clrViolet;
   uint CLR1[],CLR2[];
   Gradient(clrWhite, clr, CLR1,128); // получаем массив из 128 элементов градиента от белого цвета до цвета clr 
   Gradient(clr, clrBlack, CLR2,127); // получаем массив из 127 элементов градиента от цвета clr до черног цвета  

Une matrice commune de deux matrices CLR1 et CLR2 est votre solution.

Ma solution était un peu plus compliquée, car il faut calculer la luminosité de la couleur et la substituer à 128 et 127.

Donc, encore une fois - le dernier à répéter.
Voici la seule fonction de gradient dont vous avez besoin, et elle est plus polyvalente :

union rgb {uint clr; uchar c[4];};
void Gradient(uint clr1,uint clr2,uint &arr[],uint size)
  {
   if(size==0) return;
   ArrayResize(arr,size);
   arr[0]=clr1; 
   rgb c1,c2;
   c1.clr=clr1;
   c2.clr=clr2;
   double R1=c1.c[2],G1=c1.c[1],B1=c1.c[0];
   double R2=c2.c[2],G2=c2.c[1],B2=c2.c[0];
   double deltaR=(R2-R1)/(size-1);
   double deltaG=(G2-G1)/(size-1);
   double deltaB=(B2-B1)/(size-1);
   R1 += 0.4999;
   G1 += 0.4999;
   B1 += 0.4999;
   for(uint i=1;i<size;i++)
     {
      R1+=deltaR; c1.c[2]=uchar (R1);
      G1+=deltaG; c1.c[1]=uchar (G1);
      B1+=deltaB; c1.c[0]=uchar (B1);
      arr[i]=c1.clr;
     }
  }

car il génère tous les algorithmes donnés ici en deux lignes. C'est la plus rapide car il n'y a qu'une seule opération "+" dans la boucle, pas même une multiplication. Il donne également des mélanges de deux couleurs quelconques, et ne calcule pas seulement les nuances d'une couleur.

 
Nikolai Semko:

J'utilise une méthode différente. J'utilise juste une logique basée sur la connaissance.

Et vous ne semblez toujours pas comprendre qu'il n'y a qu'un seul algorithme, parce qu'il n'y en a pas d'autre. L'algorithme est appelé - fonction linéaire reliant deux points dans l'espace tridimensionnel (x1,y1,z1) et (x2,y2,z2)

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

Seulement pour une raison quelconque, à en juger par votre tout premier message, il vous a fallu un mois pour le créer, et même avec des erreurs, alors que je n'ai même pas eu à inventer quoi que ce soit, car il s'agit manifestement d'un problème simple reliant deux points en trois dimensions (r1,g1,b1) et (r2,g2,b2), que je connais et comprends très bien depuis l'école, pas même au niveau des formules, mais au niveau de la logique. La première réalisation m'a pris environ 15 minutes et le code a fonctionné dès la première (je ne me souviens pas, peut-être dès la deuxième) fois.

J'ai déjà écrit ici que votre algorithme est mis en œuvre en utilisant une fonction plus simple et plus polyvalente comme suit :

Une matrice commune de deux matrices CLR1 et CLR2 est votre solution.

Ma solution était un peu plus compliquée car je devais calculer la luminosité de la couleur et la substituer à 128 et 127.

alors je vais le répéter une dernière fois.
Voici la seule et unique fonction nécessaire et plus polyvalente pour travailler avec un dégradé :

car il génère tous les algorithmes donnés ici en deux lignes. C'est la plus rapide car il n'y a qu'une seule opération "+" dans la boucle, pas même une multiplication. De plus, cette fonction donne des mélanges de deux couleurs, et ne calcule pas seulement les nuances d'une couleur.

Nous avons différents algorithmes et différentes approches. Je n'ai pas de fonction linéaire reliant deux points dans un espace tridimensionnel. J'ai un graphique à deux dimensions avec six segments formant un prisme.

Votre seule et unique fonction ne donne pas la bonne gamme de couleurs. Je l'ai déjà montré et prouvé.

 
Artyom Trishkin:

Un cafard coloré dans toutes les couleurs de l'arc-en-ciel, oui avec des paillettes, ne se fera pas écraser ?

Tu n'as pas à t'inquiéter pour ça.

 
Реter Konow:

Nous avons différents algorithmes et différentes approches. Je n'ai pas de fonction linéaire reliant deux points dans un espace tridimensionnel. J'ai un graphique à deux dimensions avec six segments formant un prisme.

Votre seule et unique fonction ne donne pas la bonne gamme de couleurs. Je l'ai déjà montré et prouvé.

Vous ne faites que du désordre, mais si vous simplifiez votre création, vous obtiendrez ce que j'ai écrit. C'est pourquoi votre œuvre d'art est plus lente et fonctionne, parce que vous vous êtes tellement trompé que vous pouvez même calculer le chiffre 2 par une tangente.
Vérifiez sur la base du code de Yuri en prenant votre algorithme et celui de mon précédent post. Et vous verrez qu'il sera identique, mais beaucoup plus rapide et beaucoup plus court.

 
Nikolai Semko:

Vous venez de faire un peu n'importe quoi, mais si vous simplifiez votre création, vous obtiendrez ce que j'ai écrit. C'est pourquoi votre œuvre d'art est plus lente, parce que vous avez inventé tellement de choses, que vous pouvez calculer le numéro 2 par la tangente.
Vérifiez sur la base du code de Yuri et prenez votre algorithme à partir de mon post précédent . Vous verrez qu'il sera identique, mais beaucoup plus rapide et beaucoup plus court.

Mon algorithme fonctionne bien. C'est rapide (15-20 microsecondes). Le vôtre ne fonctionne pas correctement. Suggérez-vous que je devrais réécrire mon algorithme en fonction de votre exemple ?)

Tu m'as aidé à rendre mon algorithme plus rapide, pour que je n'aie pas à le réécrire. Merci pour cela. Sinon, mon algorithme n'a besoin que de corrections cosmétiques.

Cependant, il y a des problèmes évidents avec votre algorithme.

Raison: