Я хотел бы создать случайный цвет, основанный на исходном цвете и нормальном распределении, чтобы я мог создать случайную текстуру, говорящую сценарию: «Хорошо, это общий цвет, который вы должны использовать, но если вы отличаетесь время от времени это нормально ".
Я пишу на JavaScript, используя преобразование Бокса-Мюллера. Но если я использую нормальное распределение независимо от каждого значения R, G и B, я получаю нежелательные пики. Например, если мой базовый цвет светло-серый, я получаю пиксели очень красного, очень зеленого или очень синего цвета. На данный момент это мой сценарий ("0, 255", мин. И макс.):
function randomHex(hex, deviation){
R = HexToR(hex);
G = HexToG(hex);
B = HexToB(hex);
R = randomNormal(R, deviation, 0, 255);
G = randomNormal(G, deviation, 0, 255);
B = randomNormal(B, deviation, 0, 255);
return RGBtoHex(R,G,B);
}
Я думаю, что мне нужно как-то определить точку в трехмерном пространстве цвета RGB, а затем выбрать (равномерно распределенную) случайную точку на сфере, центр которой является определенной точкой, а радиус которого генерируется случайным образом с помощью нормальное распределение.
В любом случае, это теория. Я просто не знаю, как заставить это работать в JavaScript.
Буду благодарен за любые указатели!