Как обратно для колорпикера получить значение угла из x1, y1, x2, y2 я не могу понять.
var x1 = (Math.round(50 + Math.sin(anglePI) * 50) * obj.width) / 100;
var y1 = (Math.round(50 + Math.cos(anglePI) * 50) * obj.height) / 100,
// получаем угол
var angle = Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50); // в радианах
// угол между осью X и отрезком, заданным координатами (0,0)-(x,y)
var angle = Math.atan2(x,y); // в радианах
var angle = 180*Math.atan2(x,y)/Math.PI; // в градусах
// длинна отрезка (сежду точкми 0,0 и x,y)
var radius = Math.sqrt( Math.pow(x, 2) + Math.pow(y, 2) );
// угол angle задан в радианах
var x = radius*Math.cos(angle);
var y = radius*Math.sin(angle);
// угол между осью X и отрезком, заданным координатами (x1,y1)-(x2,y2), он же направление вектора.
var angle = Math.atan2(x2-x1,y2-y1); // в радианах
var angle = 180*Math.atan2(x2-x1,y2-y1)/Math.PI; // в градусах
// длинна отрезка, заданного координатами (x1,y1)-(x2,y2), он же длина (размер) вектора
var radius = Math.sqrt( Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2) );
// находим декартовы координаты точки конца. угол angle задан в радианах
var x2 = x1+radius*Math.cos(angle);
var y2 = y1+radius*Math.sin(angle);
x1, y1, x2, y2 - это углы (topleft, topright, bottomright, bottomleft)