<body>
<svg viewBox="0 0 100 100">
<use xlink:href="#star"></use>
</svg>
<object id="sprite" data="/sprite.svg" type="image/svg+xml"></object>
<script>
document.getElementById("sprite").addEventListener("load", function(){
const svg = this.getSVGDocument().rootElement;
svg.id = "sprite";
this.parentNode.replaceChild(svg, this);
}, { once: true });
</script>
</body>
squarePos.x = squareWidth * Math.round(mousePos.x / squareWidth);
squarePos.y = squareHeight * Math.round(mousePos.y / squareHeight);
getLength
(она считает длину градиента), берешь вертикальный отрезок этой длины и поворачиваешь его на нужный угол вокруг центра. Координаты концов отрезка и есть координаты градиента.