const anglePI = -angle * Math.PI / 180;
obj.setGradient('fill', {
x1: (Math.round(50 + Math.sin(anglePI) * 50) * obj.width) / 100,
y1: (Math.round(50 + Math.cos(anglePI) * 50) * obj.height) / 100,
x2: (Math.round(50 + Math.sin(anglePI + Math.PI) * 50) * obj.width) / 100,
y2: (Math.round(50 + Math.cos(anglePI + Math.PI) * 50) * obj.height) / 100,
colorStops: {
// тут уже идут цвета
}
})
const anglePI = angle * Math.PI / 180;
obj.setGradient('fill', {
x1: (0.5 - Math.sin(anglePI)/2) * obj.width,
y1: (0.5 - Math.cos(anglePI)/2) * obj.height,
x2: (0.5 + Math.sin(anglePI)/2) * obj.width,
y2: (0.5 + Math.cos(anglePI)/2) * obj.height,
colorStops: {
// тут уже идут цвета
}
})
// получаем угол в радианах
var angle = Math.atan2( 0.5-x1/obj.width, 0.5-y1/obj.height );
// или в градусах
var angle = 180 * Math.atan2( 0.5-x1/obj.width, 0.5-y1/obj.height )/Math.PI;
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 x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
значения угла получаются такие же, но отрицательные
// получаем угол в радианах
var angle = -Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50);
// или в градусах
var angle = -80*Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50)/Math.PI;
сбивается значение градусов, примерно на десятые
var x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
var x1 = (50 + Math.sin(anglePI) * 50) * obj.width / 100;
var y1 = (50 + Math.cos(anglePI) * 50) * obj.height / 100;
// получаем угол в радианах
var angle = Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50);
// или в градусах
var angle = 180*Math.atan2((x1*100/obj.width)-50,(y1*100/obj.height)-50)/Math.PI;
Как обратно для колорпикера получить значение угла из 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); // в радианах