本文介绍了如何计算圆弧的SVG路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出一个以(200,200)为中心,半径为25的圆,如何绘制从270度到135度的圆弧以及从270度到45度的圆弧?
Given a circle centered at (200,200), radius 25, how do I draw an arc from 270 degree to 135 degree and one that goes from 270 to 45 degree?
0度表示它在x轴上(右侧)(表示3点钟位置)270度表示12点钟位置,90度表示6点钟位置
0 degree means it is right on the x-axis (the right side) (meaning it is 3 o' clock position)270 degree means it is 12 o'clock position, and 90 means it is 6 o'clock position
更普遍的说,对于具有
的圆的一部分,圆弧的路径是什么
More generally, what is a path for an arc for part of a circle with
x, y, r, d1, d2, direction
含义
center (x,y), radius r, degree_start, degree_end, direction
推荐答案
在@wdebeaum的一个很好的答案上进行扩展,这是一种生成弧形路径的方法:
Expanding on @wdebeaum's great answer, here's a method for generating an arced path:
function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
var angleInRadians = (angleInDegrees-90) * Math.PI / 180.0;
return {
x: centerX + (radius * Math.cos(angleInRadians)),
y: centerY + (radius * Math.sin(angleInRadians))
};
}
function describeArc(x, y, radius, startAngle, endAngle){
var start = polarToCartesian(x, y, radius, endAngle);
var end = polarToCartesian(x, y, radius, startAngle);
var largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
var d = [
"M", start.x, start.y,
"A", radius, radius, 0, largeArcFlag, 0, end.x, end.y
].join(" ");
return d;
}
使用
document.getElementById("arc1").setAttribute("d", describeArc(200, 400, 100, 0, 180));
和您的html
<path id="arc1" fill="none" stroke="#446688" stroke-width="20" />
这篇关于如何计算圆弧的SVG路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!