【发布时间】:2017-12-19 01:51:56
【问题描述】:
我已经使用 start 和 endAngle 渲染了 svg 圆。它工作得很好。但是当我渲染完整的圆(startAngle 为 70,endAngle 为 70)时,输出有很大的不同(除了 0、90、180、270)。我为这段代码做错了什么?
function getPathArc(center, start, end, radius) {
end -= this.isCompleteAngle(start, end) ? 0.0001 : 0;
var degree = end - start;
degree = degree < 0 ? (degree + 360) : degree;
return this.getCirclePath(
center, getLocationFromAngle(start, radius, center),
getLocationFromAngle(end, radius, center), radius, (degree < 180) ? 0 : 1
);
}
function getCirclePath(center, start, end, radius, clockWise) {
return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' +
radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y;
}
function getLocationFromAngle(degree, radius, center) {
var radian = (degree * Math.PI) / 180;
return {
x : Math.cos(radian) * radius + center.x,
y : Math.sin(radian) * radius + center.y
}
}
function isCompleteAngle(startAngle, endAngle) {
var totalAngle = endAngle - startAngle;
totalAngle = totalAngle <= 0 ? (totalAngle + 360) : totalAngle;
return Math.floor(totalAngle / 360) !== 0;
}
示例链接:https://jsfiddle.net/fNPvf/43106/
绿色圆圈被正确渲染,因为 startAngle 和 endAngle 是 90,即使我将角度更改为 0、180、270 和 360,它也会起作用。但实际问题是我使用 70 的红色圆圈,除了那些角度(0、90、180、270、360)之外,问题也会出现。
如何解决这个问题?
【问题讨论】:
标签: javascript svg path geometry angle