2012-11-18 22 views
2

我正在使用d3绘制具有弧的圆的块。 这适用于绘制开始于10度到20度甚至300-350度的零件,但是:如何设置d3.svg.arc()中的大弧或扫掠标志()

有时我需要将弧度从350度绘制到5度,因此15度弧线代替弧从5一直运行到350.有没有办法在使用d3.svg.arc()时指定大弧标志或扫描标志? (注意,交换的开始和结束不与d3.svg.arc()

回答

2

我是新来D3的差异,所以也许有一些更简单。

你可以定义你的角度为0 。 - >扫描,然后将其旋转逆时针因此,对于您350至5:

var arc = d3.svg.arc() 
    .innerRadius(50) 
    .outerRadius(70) 
    .startAngle(0) 
    .endAngle(15 * (Math.PI/180)); 

svg.append("path") 
    .attr("d", arc) 
    .attr("transform", "rotate(-10)"); 

这里是一个jsFiddle这个

0

虽然D3是低层次的,具有d3.svg.arc,你不” t必须是低层次;只需考虑要绘制的角度范围,并将其表示为可以不间断(0° - > 360°是典型不连续性)的起始和结束数字。您可以同时使用正角度和负角度,因此使用-10°为350°可以延续范围[5 ... -10](jsfiddle):

var svg = d3.select("body").append("svg") 
    , r2d = Math.PI/180 
    , arc = d3.svg.arc() 
    .innerRadius(50) 
    .outerRadius(70) 
    .startAngle(5 * r2d) 
    .endAngle(-10 * r2d); 

svg.append("g") 
    .attr("d", arc) 
    .attr("transform", "translate(200,200)"); 
相关问题