JSFiddle - React, Tailwind, and code Playground
by bgrins
JavaScript
Gradient.prototype.angleToGradientVector = function(ang) {
function pointOfAngle(a) {
return {x:Math.cos(a),
y:Math.sin(a)};
}
function radiansToDegrees(r) {
return (r*180)/Math.PI;
}
function degreesToRadians(d) {
return (d*Math.PI)/180;
}
var inputAngle = this.getAngle();
var eps = Math.pow(2, -52);
var angle = (inputAngle % 360);
var startPoint = pointOfAngle(degreesToRadians(180-angle));
var endPoint = pointOfAngle(degreesToRadians(360-angle));
if(startPoint.x <= 0 || Math.abs(startPoint.x) <= eps) {
startPoint.x = 0;
}
else {
if ((angle > 90 && angle < 180) || (angle >270 && angle < 360)) {
startPoint.x = parseFloat(startPoint.x+.30);
}
}
if (startPoint.y <= 0 || Math.abs(startPoint.y) <= eps) {
startPoint.y = 0;
}
else {
if ((angle > 90 && angle < 180) || (angle >270 && angle < 360)) {
startPoint.y = parseFloat(startPoint.y+.30);
}
}
if (endPoint.x <= 0 || Math.abs(endPoint.x) <= eps) {
endPoint.x = 0;
}
else {
if ((angle > 90 && angle < 180) || (angle >270 && angle < 360)) {
endPoint.x = parseFloat(endPoint.x+.30);
}
}
if (endPoint.y <= 0 || Math.abs(endPoint.y) <= eps) {
endPoint.y = 0;
}
else {
if ((angle > 90 && angle < 180) || (angle >270 && angle < 360)) {
endPoint.y = parseFloat(endPoint.y+.30);
}
}
return {
x1: parseInt(startPoint.x * 100 ),
y1: parseInt(startPoint.y * 100 ),
x2: parseInt(endPoint.x * 100),
y2: parseInt(endPoint.y * 100)
}
}