La función de descomponer el color en matices. - página 19

 

Lo siento, Peter, yo me encargo. Ya he dicho todo lo que tenía que decir sobre el tema. No tengo ganas de repetirme.

No hay algoritmos tuyos y míos.

Repito, lo único digno de atención en este hilo es esta función, de la que se pueden derivar "tus" y "mis" algoritmos, el resto es un lavado de manos (tanto por tu parte como por la mía:))

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;
     }
  }
 
Nikolai Semko:

Lo siento, Peter, yo me encargo. Ya he dicho todo lo que tenía que decir sobre el tema. No tengo ganas de repetirme.

No hay algoritmos tuyos ni míos.

De nuevo, lo único digno de atención en este hilo es esta función de la que puedes obtener "tus" y "mis" algoritmos, el resto es un lavado de manos (tanto por tu parte como por la mía :))

Nikolai, estoy a favor de la objetividad. He adjuntado el script y las capturas de pantalla.

Sé que le gusta mejorar sus soluciones. Yo también.

Su algoritmo (por desgracia) crea un gradiente equivocado. No he buscado el error en él porque no sé cómo funciona. Pero tú puedes hacerlo.

 
Реter Konow:

Nikolai, estoy a favor de la objetividad. He adjuntado un script y capturas de pantalla.

Sé que le gusta mejorar sus soluciones. Yo también.

Su algoritmo (por desgracia) crea un gradiente equivocado. No he buscado el error en él porque no sé cómo funciona. Pero tú puedes hacerlo.

https://www.mql5.com/ru/forum/282861/page7#comment_8971634

https://www.mql5.com/ru/forum/282861/page9#comment_8987611

https://www.mql5.com/ru/forum/282861/page11#comment_8987978

https://www.mql5.com/ru/forum/282861/page19#comment_9019253
 

Sí, usted cree que su algoritmo funciona correctamente porque se ajusta a su teoría de cómo funciona correctamente. Lo entiendo.

Sin embargo, tomo como referencia la paleta de Windows. Si comparas la salida de tu algoritmo con la paleta, la diferencia es significativa. Se puede ver en los números y visualmente.

Eso es todo lo que quería mostrar.

Puedes dejarlo así. También se ve bien así.

 
Реter Konow:

Sí, usted cree que su algoritmo funciona correctamente porque se ajusta a su teoría de cómo funciona correctamente. Lo entiendo.

Sin embargo, tomo como referencia la paleta de Windows. Si comparas la salida de tu algoritmo con la paleta, la diferencia es significativa. Se puede ver en los números y visualmente.

Eso es todo lo que quería mostrar.

Puedes dejarlo así. También es hermoso.

No ves lo que estoy escribiendo. No me gusta el enfoque que he adoptado, que usted mismo llama mi algoritmo(menos malo). Pero su enfoque me desagrada aún más y he explicado por qué.

 
Nikolai Semko:

no ves lo que estoy escribiendo. El planteamiento que he hecho, que tú llamas mi algoritmo, no es de mi agrado, yo mismo (menos malo). Pero me desagrada aún más su enfoque y expliqué por qué.

Bueno, entonces tampoco te gusta la paleta de Windows. Después de todo, tengo una coincidencia casi completa con él.

 
Реter Konow:

Bueno, entonces tampoco te gusta la paleta de Windows. Después de todo, tengo una coincidencia casi perfecta con ella.

Ya escribí sobre eso.

Y no confundas paleta y degradado. El degradado es unidimensional, la paleta es bidimensional o tridimensional (si se trata de CMYK).

Por ejemplo:

es una paleta roja bidimensional

y este es su gradiente unidimensional.

Se trata de argumentar dónde se necesita la unión de los dos gradientes (del negro al color y del color al blanco). Usted sostiene que las variantes del medio son las únicas correctas, ya que se utilizan en el Paint de Windows. En tus ejemplos anteriores, en los que sólo aparece un componente de color y el resto son 0, sí - es correcto, pero es sólo un caso especial. No estoy afirmando nada, sólo digo que depende de la tarea a realizar, pero creo que es lógico ponerlo en el caso más general, en función de la luminosidad del color (suma de R+B+G).

Por ejemplo, en los editores gráficos más serios, como los de Corel y Adobe, cuando se trata de rellenos de degradado, hay un ajuste para el "centro de gravedad" del degradado:

es un argumento sin importancia.

Me estoy catapultando fuera de este tema.

 
Nikolai Semko:


Me refiero a la gama de colores. El gradiente puede ser diferente. Pero la gama completa de matices de un mismo color es constante.

Cada color tiene tres componentes, tres puntos en un gráfico. Cada línea tiene dos segmentos en el gráfico. Los segmentos aparecen por la refracción de la luz. El eje de refracción está en el centro del gráfico. Cada segmento tiene un ángulo de ascenso diferente. El ascenso va de cero al valor máximo. Los seis segmentos del gráfico representan un prisma cuyos ángulos son constantes para cada rango. La tarea consiste en encontrar el valor de un componente en cada punto de las barras. De esta manera, encuentro todos los matices de un color. Todo lo demás es una manipulación derivada de esta solución. Puedes cambiar los ángulos de subida, puedes mezclar colores, etc. La base sigue siendo la misma.

En su solución, la gama de tonos está incompleta o distorsionada. En cualquier caso, la transición de tonos no es suave y armoniosa.


zy. Sobre el centro de gravedad, estoy de acuerdo. Pero es sólo una manipulación para calcular puntos específicos en el gráfico. Puede obtener más valores de componentes en el primer segmento que en el segundo. Así es como se obtiene un "gradiente de centro de gravedad desplazado" (como el ejemplo anterior).

 
¿Qué tal un poco de tic-tac-toe?
 

El gráfico es algo así:



Y a todo esto llegué simplemente observando el comportamiento de los números en las ventanas de la paleta de Windows.

Razón de la queja: