Как выполнить одноцветную линейную интерполяцию? - PullRequest
1 голос
/ 13 июля 2020

Мне нужно выполнить цветовую интерполяцию одного цвета (не интерполяцию от одного цвета к другому). Например, если цвет желтый (темно-желтый), он должен быть интерполирован до светло-желтого в течение определенной продолжительности, что означает, что для каждого временного шага цветовая интерполяция должна происходить в пределах цвета, а после этого - обратная интерполяция продолжительности / временного шага (от светло-желтого до темного желтый) должен начинаться с определенного временного шага, поэтому этот цикл продолжается до тех пор, пока пользователь не остановит его с помощью команды запроса.

В основном мне нужно изменить яркость.

using color_t = std::array<float,3>;
          // we can consider the value from 0-255
color_t yellow{1,1,0}; //as we increase yellow[2], it move towards light yellow
color_t green{0,1,0}; //dark green
// as we increase green[2],it move towards light green
color_t red{1,0,0};
// as we increase red[1],it move towards light red
color_t blue{0,0,1};
// as we increase blue[1],it move towards light blue
timeStepCount = 0;
time_step = 100;
void Linear(std::array<float,3>&color){
            
}   

В приведенной выше функции RGB значение (скажем, для желтого) для цвета будет передаваться по ссылке, поэтому для каждого временного шага мне нужно получить разные значения RGB одного и того же цвета (как я упоминал выше, от темного к светлому и от светлого к темному).

Мне нужна общая c линейная функция, которая должна работать для любого цвета.

Я знаю, что мне нужно найти математическое уравнение, чтобы его решить. Но также хорошо, если я получу какое-либо решение для вышеупомянутых цветов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...