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

 
prostotrader:
¿No sabes hacer el tres en raya?

Con degradados y tonos fríos ))))

 
Sergey Basov:

Con degradados y matices geniales )))

No veo qué gracia tiene eso. Es muy triste. El Mundo lleva mucho tiempo creando una forma genial para una causa inútil, y aquí siguen preguntando "¿para qué se necesita?". Necesario para estar al día con el mundo. De lo contrario, el mundo lo aplastará.

 
Реter Konow:

No veo qué gracia tiene eso. Es muy triste. El mundo lleva mucho tiempo creando una forma genial para un punto inútil, y aquí todavía se preguntan "¿por qué lo necesitamos?". Necesario para estar al día con el mundo. De lo contrario, el mundo lo aplastará.

Por lo tanto, demuestre que alguien lo necesita (GUI, gradiente adecuado, tintes, etc), en el mercado.

El gato y el hombre han estado insinuando esto durante mucho tiempo ))

PS. No es nada personal, a mí también me gustan las interfaces bonitas, pero sólo como extras en MT.

 
Реter Konow:

No veo qué gracia tiene eso. Es muy triste. El Mundo lleva mucho tiempo creando una forma genial para una causa inútil, y aquí siguen preguntando "¿para qué se necesita?". Necesario para estar al día con el mundo. De lo contrario, el mundo lo aplastará.

Una cucaracha teñida de todos los colores del arco iris, sí con brillos, ¿no se aplastará?

 
Sergey Basov:

Entonces, pruebe que alguien lo necesita (GUI, gradiente adecuado, tonos, etc.), en el mercado.

El gato y el hombre han estado insinuando esto durante mucho tiempo ))

PS. No es nada personal, a mí también me gustan las interfaces bonitas, pero sólo como extras en MT.

¿Quién está ahí?

 
Реter Konow:

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

Yo uso un método diferente. Sólo incorporo la lógica basada en el conocimiento.

Y parece que sigues sin entender que tenemos el mismo algoritmo, porque no hay otro. El algoritmo se llama - función lineal que conecta dos puntos en el espacio tridimensional (x1,y1,z1) y (x2,y2,z2)

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

Sólo que por alguna razón, a juzgar por tu primer mensaje, has tardado un mes en crearlo, e incluso con errores, mientras que yo ni siquiera he tenido que inventar nada, porque evidentemente es un simple problema que conecta dos puntos en tres dimensiones (r1,g1,b1) y (r2,g2,b2), que conozco y entiendo muy bien desde la escuela, ni siquiera a nivel de fórmulas, sino a nivel de lógica. La primera realización me ha llevado unos 15 minutos y el código ha funcionado desde la primera (no recuerdo, quizás desde la segunda) vez.

Ya escribí aquí que su algoritmo se implementa usando una función más simple y versátil como la siguiente:

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

Una matriz común de dos matrices CLR1 y CLR2 es su solución.

Mi solución fue, un poco más complicada, porque hay que calcular la luminosidad del color y sustituirla en lugar de 128 y 127.

Así que, una vez más, esta es la última que se repite.
Esta es la única función de gradiente que necesitas, y es más versátil:

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;
     }
  }

ya que genera todos los algoritmos dados aquí en dos líneas. Es el más rápido ya que sólo hay una operación "+" en el bucle, ni siquiera la multiplicación. También da mezclas de dos colores cualesquiera, no sólo calcula los tonos de uno.

 
Nikolai Semko:

Yo utilizo un método diferente. Sólo uso la lógica basada en el conocimiento.

Y parece que sigues sin entender que sólo hay un algoritmo, porque no hay otro. El algoritmo se llama - función lineal que conecta dos puntos en el espacio tridimensional (x1,y1,z1) y (x2,y2,z2)

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

Sólo que por alguna razón, a juzgar por tu primer mensaje, has tardado un mes en crearlo, e incluso con errores, mientras que yo ni siquiera he tenido que inventar nada, porque evidentemente es un simple problema que conecta dos puntos en tres dimensiones (r1,g1,b1) y (r2,g2,b2), que conozco y entiendo muy bien desde la escuela, ni siquiera a nivel de fórmulas, sino a nivel de lógica. La primera realización me ha llevado unos 15 minutos y el código ha funcionado desde la primera (no recuerdo, quizás desde la segunda) vez.

Ya escribí aquí que su algoritmo se implementa usando una función más simple y versátil como la siguiente:

Una matriz común de dos matrices CLR1 y CLR2 es su solución.

Mi solución fue un poco más complicada, ya que necesito calcular la luminosidad del color y sustituirla en lugar de 128 y 127.

así que lo repetiré una última vez.
Aquí está la única función necesaria y más versátil para trabajar con un gradiente:

ya que genera todos los algoritmos dados aquí en dos líneas. Es el más rápido ya que sólo hay una operación "+" en el bucle, ni siquiera la multiplicación. Además, esta función da mezclas de dos colores cualesquiera, no sólo calcula los tonos de uno.

Tenemos diferentes algoritmos y enfoques. No tengo ninguna función lineal que conecte dos puntos en el espacio tridimensional. Tengo un gráfico bidimensional con seis segmentos que forman un prisma.

Su única función no da la gama de colores adecuada. Ya lo he mostrado y demostrado.

 
Artyom Trishkin:

Una cucaracha coloreada con todos los colores del arco iris, sí con brillos, ¿no se aplastará?

No tienes que preocuparte por eso.

 
Реter Konow:

Tenemos diferentes algoritmos y enfoques. No tengo ninguna función lineal que conecte dos puntos en el espacio tridimensional. Tengo un gráfico bidimensional con seis segmentos que forman un prisma.

Su única función no da la gama de colores adecuada. Ya lo he mostrado y demostrado.

Sólo estás haciendo un lío, pero si simplificas tu creación, conseguirás lo que he escrito. Por eso tu obra de arte es más lenta y funciona, porque has metido tanto la pata que hasta puedes calcular el dígito 2 por la tangente.
Comprueba en base al código de Yuri tomando tu algoritmo y este de mi post anterior. Y verás que será idéntico, sólo que mucho más rápido y mucho más corto.

 
Nikolai Semko:

Acabas de hacer un lío, pero si simplificas tu creación, conseguirás lo que he escrito. Por eso tu obra de arte es más lenta, porque te has inventado tantas cosas, que puedes calcular el número 2 por la tangente.
Comprueba en base al código de Yuri y toma tu algoritmo de mi post anterior . Verás que será idéntico, sólo que mucho más rápido y mucho más corto.

Mi algoritmo funciona bien. Es rápido (15-20 microsegundos). El tuyo no funciona correctamente. ¿Estás sugiriendo que reescriba mi algoritmo según tu ejemplo)?

Me ayudaste a hacer mi algoritmo más rápido, para no tener que reescribirlo. Gracias por eso. Por lo demás, mi algoritmo no necesita más que arreglos cosméticos.

Sin embargo, hay problemas evidentes con su algoritmo.