На вход приходит число, угол в диапазоне 0-360.
Для линейного градиента, где 4 значения, т.е. 2 точки, начальная и конечная.
/*ctx.createLinearGradient(
0 / * x0 * /,
0 / * y0 * /,
0 / * x1 * /,
0 / * y1 * /
);*/
const findPointsAngle = ( angle, /* canvas 300x400 */ { width, height } ) => {
let r = height;
let x0 = width / 2;
let y0 = 0;
let x1 = Math.floor(x0 + r * Math.sin(angle)/ 2);
let y1 = Math.floor(y0 + r * Math.cos(angle) / 2);
if (angle === +0) {
y1 = height;
}
return { x0, y0, x1, y1 };
};
К примеру, на вход пришло 2 градуса
функция выведет:
{ x0: 150, y0: 0, x1: 513, y1: -167 }
А надо, приблизительно:
{ x0: 150, y0: 0, x1: 150, y1: 400 }
Так же, если под 180 и т.д., то начальная точка изменяется.
Подскажите, как рассчитать правильно?