我正在使用两个圆圈进行d3视觉工作,其中较小的圆圈放置在大圆圈半径的边缘上。这个代码位于这里https://codepen.io/ajblack/pen/KqKpde。我有一个200像素的方块SVG,我将这些圆圈放入,然后我有两个值,uAssets和uAssetsCom,它们指示圆圈的大小。创建的比率,以确保较大的圆使用此代码在200像素的平方拟合:位于大圆半径边缘的D3小圆圈
var ratioToFit = (200/uAssets)/2;
然后我使用余弦计算大圆的外半径和外结合的SVG之间的距离以45度的角容器:
var key = 100*((1-Math.cos(45*Math.PI/180))/Math.cos(45*Math.PI/180))
要放置的小圆圈我计算cx
和cy
属性作为内圆的半径加上这个“关键”。
d3.select("#uAssetComCircle")
.attr("cx", function(d){return (d.radius+key);})
.attr("cy", function(d){return (d.radius+key);})
这地方靠近较大圆的半径内圆,但它是关于2个像素关闭。我可以用一个硬编码的2像素加到cx
和cy
来弥补这一点,但我觉得我不应该这样做。
我算了算吗?
我相信错误是在“关键”计算。我没有完全追踪它,但尝试将角度从45改为60,并且你会发现它没有做你想做的事 – cmonkey