Я уже выше продемонстрировал недостаток твоего подхода, а если он совпадает с той палитрой, с которым ты его сравниваешь, то и его тоже, на примере белой линии. Еще раз другими словами.
Если ты плавноо меняешь цвет от черного (0,0,0) до белого (255,255,255) проходящий через конкретный цвет (r1,g1,b1), то важным показателем является сумма трех цветов R, G и B. Здесь лучше отойти от терминологии, т.к. в ней можно запутаться (яркость, светлота, тон ....)
Абсолютно очевидно, что в идеале этот показатель должен меняться линейно от 0 до 3*255=765. Ты лупишь свой цвет строго посередине, я же вычисляю вначале сумму изначального цвета и вставляю его в массив градиента в соответствии с этой его суммой RGB. Поэтому моя белая линия не имеет точку перелома в отличии от твоей.
Николай, пока ты не объяснил принцип работы своего алгоритма и говоришь о каких то белых линиях, которые должны быть такими, но не другими...
Очевидно, что ты сам не понимаешь, как раскладывает на оттенки твой алгоритм. У тебя нет целостной концепции. Только путаница из терминов и заимствованный откуда то код...
Еще не все готово. Признаю, недооценил степень разницы платформ. Алгоритм на МТ5 барахлит в некоторых местах. Но проблема только в коде, а не концепции.
Николай, пока ты не объяснил принцип работы своего алгоритма и говоришь о каких то белых линиях, которые должны быть такими, но не другими...
Очевидно, что ты сам не понимаешь, как раскладывает на оттенки твой алгоритм. У тебя нет целостной концепции. Только путаница из терминов и заимствованный откуда то код...
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами. Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами. Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Вот как работает твой алгоритм на примере этой функции:
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164union rgb {uint clr; uchar c[4];};
voidOnStart()
{
rgb c,C;
uint CLR[];
color clr=clrViolet;
Gradient(clrWhite, clr, CLR,W.Height/2); // получаем массив градиента от белого цвета до цвета clr for(int y=0; y<W.Height/2; y++) Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(CLR[y],240)); // выводим на экран
Gradient(clr, clrBlack, CLR,W.Height-W.Height/2); // получаем массив градиента от цвета clr до черног цвета for(int y=W.Height/2; y<W.Height; y++) Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(CLR[y-W.Height/2],240)); // выводим на экран в продолжение предыдущего
Canvas.Update();
Sleep(30000);
}
//+------------------------------------------------------------------+void Gradient(uint clr1,uint clr2,uint &arr[],uint size)
{
if(size==0) return;
ArrayResize(arr,size);
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);
for(uint i=0;i<size;i++)
{
R1+=deltaR; c1.c[2]=uchar (R1+0.4999);
G1+=deltaG; c1.c[1]=uchar (G1+0.4999);
B1+=deltaB; c1.c[0]=uchar (B1+0.4999);
arr[i]=c1.clr;
}
}
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами. Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Изложи свою концепцию разложения цвета. Если алгоритм твой, ты ее хорошо знаешь.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вот результат работы моего алгоритма на МТ5. Без лишних и ненужных примочек.
а код?
Я уже выше продемонстрировал недостаток твоего подхода, а если он совпадает с той палитрой, с которым ты его сравниваешь, то и его тоже, на примере белой линии.
Еще раз другими словами.
Если ты плавноо меняешь цвет от черного (0,0,0) до белого (255,255,255) проходящий через конкретный цвет (r1,g1,b1), то важным показателем является сумма трех цветов R, G и B. Здесь лучше отойти от терминологии, т.к. в ней можно запутаться (яркость, светлота, тон ....)
Абсолютно очевидно, что в идеале этот показатель должен меняться линейно от 0 до 3*255=765. Ты лупишь свой цвет строго посередине, я же вычисляю вначале сумму изначального цвета и вставляю его в массив градиента в соответствии с этой его суммой RGB. Поэтому моя белая линия не имеет точку перелома в отличии от твоей.
Николай, пока ты не объяснил принцип работы своего алгоритма и говоришь о каких то белых линиях, которые должны быть такими, но не другими...
Очевидно, что ты сам не понимаешь, как раскладывает на оттенки твой алгоритм. У тебя нет целостной концепции. Только путаница из терминов и заимствованный откуда то код...
а код?
Еще не все готово. Признаю, недооценил степень разницы платформ. Алгоритм на МТ5 барахлит в некоторых местах. Но проблема только в коде, а не концепции.
Николай, пока ты не объяснил принцип работы своего алгоритма и говоришь о каких то белых линиях, которые должны быть такими, но не другими...
Очевидно, что ты сам не понимаешь, как раскладывает на оттенки твой алгоритм. У тебя нет целостной концепции. Только путаница из терминов и заимствованный откуда то код...
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами.
Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами.
Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Вот как работает твой алгоритм на примере этой функции:
Петр, ну что ты такое говоришь. Если бы я не понимал, то как бы я смог это делать. Писать алгоритм в коде гораздо проще чем описывать его словами.
Ну скажи ты понимаешь смысл этого кода? Ведь все настолько элементарно и очевидно, что я даже не понимаю какие здесь можно коментарии вставлять.
Изложи свою концепцию разложения цвета. Если алгоритм твой, ты ее хорошо знаешь.
Похоже, это вы себя в чем то убеждаете. Повторяю, не было времени сделать визуализацию. Вы проверили алгоритм в сверении с палитрой?
Результат работы вашего скрипта для цвета 207,255,65.
Результат работы вашего скрипта для цвета 207,255,65.
Спасибо за наблюдение. Я тоже выявил несколько ошибок. Сейчас сделаю гифку с МТ4. Работает неплохо, но на паре цветов есть проблемы.
Не получаются у меня качественные гифки. Вот скрипт. Поставьте на МТ4 и увидите все как есть.
Нашел первую ошибку. Исправил.
Нужно было добавить :
в каждый цикл.