我使用开始和endangle如下绘制的SVG圆的角度,如何找到某一点
document.getElementById("circle").setAttribute("d", describeArc(150, 150, 100, 180, 360));
function getPathArc(center, start, end, radius) {
end = end - 0.0001;
var degree = end - start;
degree = degree < 0 ? (degree + 360) : degree;
var clockWise = (degree < 180) ? 0 : 1;
return getPiePath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, clockWise);
}
function getPiePath(center, start, end, radius, clockWise) {
return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y;
};
function degreeToLocation(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 describeArc(x, y, radius, startAngle, endAngle){
var endAngle = endAngle - startAngle;
startAngle = startAngle <= 0 ? (360 + startAngle) % 360 : startAngle % 360;
endAngle = endAngle < 0 ? (360 + endAngle + startAngle) % 360 : Math.abs(endAngle + startAngle) % 360;
var direction = getPathArc({'x': x, 'y': y}, startAngle, endAngle, radius);
var d = direction;
return d;
}
这里是样品https://jsfiddle.net/ndmsqmao/3/
我需要绘制了一个刻度线指定点的圆圈。
例如让我们考虑一下,
,如果它的值从50到100的意思是,我需要绘制66位值的一个刻度线..如何达致这开始?
这会帮助(https://codepen.io/MitchJackson94 /笔/ vHzEf)? – evolutionxbox
谢谢,但只显示了一个圆的角度...我需要显示的第40个值的意思,startAngle是180 endAngle是36开始值是50和最终值是100意味着我需要指出第66个值 –
@evolutionxbox我也试图计算一些这是从我身边缺少的确切点的程度 如果值是75意味着它应该返回90度。 ((((Math.abs(value)/(100))*(360)))+ 180; –