A função de decompor a cor em tons. - página 8

 
Nikolai Semko:
Eu removi as tangas de seu algoritmo. Foi um mistério para mim porque você os usou. Olhe no código, então como eu produziria a cor real. Você tem um monte de verificações desnecessárias, você usa funções como tangente, ordenação de matriz, eu só +-*//. A Mt4 é mais lenta, isso é compreensível, mas não 30 vezes mais lenta.
OK, vou colar meu algoritmo no 4 mais tarde e ver. Por que você está usando 4? Para a GUI, 4 não é bom de todo. Nem sequer lê recursos. É muito mais difícil converter de 4 para 5 códigos do que vice-versa.

O MT4 pode ser 60 vezes mais lento. Verifique a taxa de preenchimento int array em ambas as plataformas e veja.

 
Nikolai Semko:
Eu removi a tanga do seu algoritmo. Foi um mistério para mim porque você os usou. Olhe no código, então como eu produziria a cor real. Você tem um monte de verificações desnecessárias, você usa funções como tangente, ordenação de matriz, eu só +-*//. A Mt4 é mais lenta, isso é compreensível, mas não 30 vezes mais lenta.
OK, vou colar meu algoritmo no 4 mais tarde e ver. Por que você está usando 4? Para a GUI, 4 não é bom de todo. Nem sequer lê recursos. É muito mais difícil modificar o código de 4 para 5 do que vice versa.

Para a GUI, 4 é muito bom. Mas não estamos falando sobre isso. Não nos desviemos do assunto.

 
Nikolai Semko:
Eu removi a tanga do seu algoritmo. Foi um mistério para mim porque você os usou. Olhe no código, então como eu produziria a cor real. Você tem um monte de verificações desnecessárias, você usa funções como tangente, ordenação de matriz, eu só +-*//. A Mt4 é mais lenta,

É claro que as tangas podem ser omitidas. Pensei que seria mais fácil de usar. De que adianta economizar microssegundos se a função é chamada uma vez?

 
Nikolai Semko:
Você tem um monte de verificações desnecessárias, você usa funções como tangente, ordenação de matriz, enquanto eu uso apenas +-*/.

Nikolai, antes que você diga que eu tenho algo errado, vamos nos certificar de que seu algoritmo seja de fato mais rápido e melhor. Vou colocar meu algoritmo no MT5 e verificar a velocidade. E você imprime uma impressão de sua matriz e a compara com as cores do Windows. (Neste caso, você ainda terá que usar o tipo de fio. Essa é uma das razões pelas quais eu a usei. Também era necessário para fins de comparação).

 
Реter Konow:

Nikolai, antes que você diga que eu tenho algo errado, vamos nos certificar de que seu algoritmo seja de fato mais rápido e melhor. Vou colocar meu algoritmo no MT5 e verificar a velocidade. E você imprime uma impressão de sua matriz e a compara com as cores do Windows. (Neste caso, você ainda terá que usar o tipo de fio. Essa é uma das razões pelas quais eu a usei. Eu também precisava dele para comparação).

Meu algoritmo no 4 tem mais de 4 vezes vantagem sobre o seu.

Aqui está um excelente exemplo de porque não é sábio usar o 4.

Em primeiro lugar, mesmo algoritmos simples com +/-* funcionam 5-7 vezes mais lentamente.

Em segundo lugar, minha função passou imediatamente para 4 sem erros. Eu tentei o seu, fiz um monte de correções, mas o código produziu valores completamente diferentes, havia algumas listras de cores. Tente você mesmo, se você não acredita em mim.

A questão é que você está roubando seu tempo ao usar 4. Mais cedo ou mais tarde você terá que refazer o código de 4 a 5. E se você mudou completamente para 5, você pode estar em dois ou três anos para fazer o procedimento inverso já, porque o 4-core não estará em tal demanda como agora, e mesmo que esteja em demanda, o esforço gasto em refazer o código de 5 para 4 é desproporcional ao inverso.

Arquivos anexados:
 
Реter Konow:

Nikolai, antes que você diga que eu tenho algo errado, vamos nos certificar de que seu algoritmo seja de fato mais rápido e melhor. Vou colocar meu algoritmo no MT5 e verificar a velocidade. E você imprime uma impressão de sua matriz e a compara com as cores do Windows. (Neste caso, você ainda terá que usar o tipo de fio. Essa é uma das razões pelas quais eu a usei. Também era necessário para a comparação).

E a propósito, com minha função, funciona sem tais falhas:

Portanto, há um bug em seu algoritmo. Você pode descobrir por si mesmo.

 
Nikolai Semko:

Meu algoritmo no 4 tem mais de 4 vezes o ganho do seu.

Aqui está um excelente exemplo de porque não é sábio usar o 4.

Primeiro, mesmo os algoritmos simples +/-* são 5 a 7 vezes mais lentos.

Em segundo lugar, minha função passou imediatamente para 4 sem erros. Eu tentei o seu, fiz um monte de correções, mas o código produziu valores completamente diferentes, havia algumas listras de cores. Tente você mesmo, se você não acredita em mim.

A questão é que você está roubando seu tempo ao usar 4. Mais cedo ou mais tarde você terá que refazer o código de 4 a 5. Mas se você tivesse mudado completamente para 5, provavelmente não teria que passar pelo procedimento inverso em alguns anos, porque 4 não estará em uma demanda tão alta como está agora e mesmo que estivesse, o esforço gasto na conversão de código de 5 para 4 seria desproporcional ao esforço gasto no inverso.

Nicolai, não nos deixemos distrair por tópicos estranhos. A conversa é sobre a exatidão dos algoritmos e a comparação de sua velocidade.

  1. Mostre que seu algoritmo funciona corretamente ao imprimir cores a partir de uma matriz e compará-las com as cores da paleta Windows.
  2. Vou traduzir meu algoritmo para o MT5 por enquanto e relatar os resultados.

 
Реter Konow:

Nikolai, antes que você diga que eu tenho algo errado, vamos nos certificar de que seu algoritmo seja de fato mais rápido e melhor. Vou colocar meu algoritmo no MT5 e verificar a velocidade. E você imprime uma impressão de sua matriz e a compara com as cores do Windows. (Neste caso, você ainda terá que usar o tipo de fio. Essa é uma das razões pelas quais eu a usei. Também era necessário para a comparação).

Para emitir um tipo de string não é necessário colocá-lo no corpo da própria função, mas sim converter os valores para este tipo no momento da impressão.

for (int l=0;l<256;l++) {Col.clr=Gradient[l]; Print("RGB = " + string(Col.c[2])+", "+string(Col.c[1])+", "+string(Col.c[0]));}
 
Nikolai Semko:

Para emitir um tipo de string, não é necessário colocá-lo no próprio corpo da função, mas sim traduzir os valores para esse tipo no momento da impressão.

Você está novamente distraído com outros tópicos. Não é uma questão de como emitir o tipo de corda. É o estilo pessoal de todos.

Você mudou meu código e acrescentou muito de seu próprio código. Isto mudou consideravelmente o resultado. Estou traduzindo tudo para o MT5 e tentando entender o que você escreveu aqui.

A questão é que, ao comparar com a paleta de cores, tenho tudo claro. Mas ao exibi-lo na tela com seu algoritmo, eu tenho um problema. Estou tentando descobrir onde está o problema.

 
Реter Konow:

Você está novamente distraído com outros tópicos. Não é uma questão de cordas do tipo saída. É o estilo pessoal de todos.

Você mudou meu código e acrescentou muito de seu próprio código. Isto mudou consideravelmente o resultado. Estou traduzindo tudo para o MT5 e tentando entender o que você escreveu aqui.

A questão é que, ao comparar com a paleta de cores, tenho tudo claro. Mas ao exibi-lo na tela com seu algoritmo, eu tenho um problema. Estou tentando descobrir onde está o problema.

Peter, a questão é que você postou uma função no fórum para que todos possam ver e aplicar a decomposição de cores. Mas esta função não gera a matriz de cores necessária, ela apenas gera uma matriz de cordas adequada apenas para impressão em vez de exibir seu próprio gradiente na tela. É um porco em um poço e sem respeito pelos outros. Portanto, traduza você mesmo, se alguém precisar.

Razão: