【发布时间】:2021-12-23 03:04:29
【问题描述】:
我正在尝试创建一个指向特定角度、宽度(以度为单位)和与中心的距离的弧(这样弧不会重叠)。
包含的 sn-p 调用 JavaScript 函数 DrawLine 画线,但角度不正确。此外,当DISTANCE_FROM_CENTER 变量发生变化时,圆弧的角度也会发生变化,这是不应该发生的。
我正在附上一个角度应该是什么样子的屏幕截图。
我还包括我们如何解释圆中的角度,310 度应该指向左上角。 javascript 将它们绘制为指向右侧。
let svg = document.getElementById("icon");
function drawLine(azimuth, radius, length)
{
let circumference = radius * 2 * Math.PI;
// Create an SVG <circle> element
let line = document.createElementNS(svg.namespaceURI, "circle");
line.setAttribute("r", radius);
line.setAttribute("stroke-dasharray", length + ' ' + circumference);
line.setAttribute("transform", "rotate(" + azimuth + ")");
// Add it to the <svg> element
svg.appendChild(line);
}
let DISTANCE_FROM_CENTER1 = 93,
DISTANCE_FROM_CENTER2 = 65,
DISTANCE_FROM_CENTER3 = 30,
DISTANCE_FROM_CENTER4 = 9;
drawLine(312, DISTANCE_FROM_CENTER1, 110);
drawLine(312, DISTANCE_FROM_CENTER2, 95);
drawLine(312, DISTANCE_FROM_CENTER3, 55);
drawLine(312, DISTANCE_FROM_CENTER4, 15);
svg {
width: 400px;
}
circle {
fill: none;
stroke: black;
stroke-width: 14;
}
<svg id="icon" viewBox="-100 -100 200 200">
</svg>
【问题讨论】:
-
从您发布的图片中,我会说长度应该是相对于周长的。除了你接缝有几个半径相同但角度不同的圆,
-
它似乎并没有改变我的角度。所有左边缘都对齐,这是预期的,因为您将相同的值 (200) 传递给函数。
-
我很确定 SVG 认为 0 是完全正确的。我可以检查,但我很确定。您可以将 0 传递给它的角度并检查,但我在查看您的代码时确实尝试了几次。这就是为什么我说我只是在使用你的号码。我想您可能正在寻找 -138 或 232。
-
如果你想传递你期望的角度,你可以在函数内部调整方位角,看看我的编辑,让我知道这是否是你要找的。span>
标签: javascript svg setattribute