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); // в радианах
// угол между осью 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);
так не то?
И что делать с ситуацией когда параграфов несколько?
не могли бы вы написать json который должен получится в локалсторадже есть вы в вашем примере отметите все галочки.