исходя из кода выше, доделать: - читайте комментарии, надо побороть копипасту по подсчету угла (напишите функцию getAngleByCoords, и применяйте её в mousedown, mousemove и mouseup. - в mouseup, подсчитайте в обратную сторону шаг из угла (для этого надо не умножать, а делить на цену вашего угла). Получив шаг, сделайте updateValue с вычисленным шагом - добавьте проверки на переходы через границы в updateValue, не допускайте нарушение границ min и max - добавьте в this внутри функции-конструктора Control всякие возможности типа setValue и getValue, для работы с крутилкой. - сделайте так, что бы onChange, передаваемый в конструктор запускался при любом изменении value. пусть в эту функцию приходит текущее value в крутилке - используя три объекта класса Control создайте три крутилки, каждая из которых влияет на свой канал RGB. Из При изменении может менятся один из трех дивов с конкретным цветом(одним из каналов) и общий див, в котором все три канала смешаны.