将颜色分解为阴影的功能。 - 页 21

 
Реter Konow:

我的算法运作良好。它很快速(15-20微秒)。你的工作不正常。你是在建议我按照你的例子重新制定我的算法吗?)


就这样吧,彼得,你的不耐烦让我厌烦。

我再也不能忍受了。

我赢了,你的算法太完美了

 
Nikolai Semko:


就这样吧,彼得,你的不耐烦让我厌烦。

我再也不能忍受了。

我赢了,你的算法太完美了

我的并不完美。它只是更正确。

这则寓言的寓意是:无论是语法,还是语言,还是风格,还是遵守标准规则!都是如此。开发商的规则。

 
Реter Konow:

我的并不完美。它只是更忠实于。

好吧,你在rgb空间的部分比我的更直。
 
Nikolai Semko:
好吧,你在rgb空间的部分比我的更直接。

好的。这个话题很有趣,也很有用。

 
众人无言以对...
 
Алексей Тарабанов:
众人无言以对...
他们当然会这样做。除了我之外,没有傻瓜。
 
Nikolai Semko:
你说对了。没有傻子,除了我。

来吧...一个有用的功能诞生了。

关于交易、自动交易系统和交易策略测试的论坛

颜色分解功能。

Nikolai Semko, 2018.10.15 22:21

...

这里是处理渐变的唯一必要和更通用的功能。

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

因为它在两行中生成了这里给出的所有算法。这是最快的,因为循环中只有一个 "+"的操作,甚至连乘法都没有。此外,这个函数还提供任何两种颜色的混合,而不仅仅是计算一种颜色的色调。


 
Artyom Trishkin:

来吧...一个有用的功能诞生了。


是的,但我个人不太可能使用它,因为我吝于为动态梯度生成一个几KB的中间阵列。对于静态的,它当然是有用的。但我主要是有动态的,在没有数组的情况下,即时计算梯度。
无论如何,安德烈-哈蒂姆兰斯基是对的。皮奥特像个傻瓜一样一直在骗我的时间。
 
Artyom Trishkin:

来吧...一个有用的功能诞生了。

因为它在两行中生成了这里给出的所有算法。这是最快的,因为循环中只有一个 "+"的操作,甚至连乘法都没有。此外,这个函数还提供任何两种颜色的混合,而不仅仅是计算一种颜色的色调。

非常有可能...色彩、旋律和声音...。顺便说一下,目前的报价和他们的变化,听起来相当不错!。

它们的颜色是什么样子的?那会是什么呢--色彩和谐还是嘈杂?

 
aleger:

很有可能...色彩、旋律和声音...。顺便说一下,目前的报价和他们的变化,听起来非常好!

它们的颜色是什么样子的呢?那会是什么呢--色彩和谐还是喧嚣?

你给了彼得一个想法。让我们看看这将是一个什么样的 "Petrophonia"。