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