Javascript 如何使用d3.js创建与圆/项链相交的多多边形?
想象一条带珠子的项链。我需要一个d3的解决方案,可以帮助绘制这个。 我们使用了组合项链和手镯: 但我们想扩展它。所以我又看了看,发现了圆和多边形的交点 然而,我不知道圆形多边形相交是否是最好的方法。我正在d3.js中寻找有助于解决问题的建议和解决方案Javascript 如何使用d3.js创建与圆/项链相交的多多边形?,javascript,d3.js,Javascript,D3.js,想象一条带珠子的项链。我需要一个d3的解决方案,可以帮助绘制这个。 我们使用了组合项链和手镯: 但我们想扩展它。所以我又看了看,发现了圆和多边形的交点 然而,我不知道圆形多边形相交是否是最好的方法。我正在d3.js中寻找有助于解决问题的建议和解决方案 珠子/多边形的数量可以是100秒或1000秒,颜色也可以不同。我不知道你的问题是否与d3的显示项链有关。如果是这样,我的解决方案如下: 没有d3布局可以做到这一点,但是如果你坐下来用铅笔和纸,用一本旧的三角学教科书来计算给定数量的圆在圆中的节点的
珠子/多边形的数量可以是100秒或1000秒,颜色也可以不同。我不知道你的问题是否与d3的显示项链有关。如果是这样,我的解决方案如下:
没有d3布局可以做到这一点,但是如果你坐下来用铅笔和纸,用一本旧的三角学教科书来计算给定数量的圆在圆中的节点的位置,你应该能够计算出来。你在找类似的东西吗?嗨,拉尔斯,谢谢你的回答。我刚刚用我正在寻找的东西的粗略图像更新了这个问题。阿米莉亚,这是真的,但我正在寻找一个通用函数,因为我需要在圆上显示的点数可以是100…对于diff colorsSumi,写几个例子,然后试着抽象它。
function necklace (svg, radius, len) {
// unit conversion
var degrees = (pos) => pos * 360 / len
var radians = (pos) => degrees(pos) * Math.PI / 180
svg.append('svg:circle')
.attr('r', radius).attr('fill', 'none')
.attr('stroke', 'black')
.attr('stroke-width', 2)
// add circles (data is 0...len)
svg.selectAll('.circles')
.data(d3.range(0, len)).enter()
.append('svg:circle')
.attr('r', 10)
.attr('cx', (pos) => radius * Math.cos(radians(pos)))
.attr('cy', (pos) => radius * Math.sin(radians(pos)))
.attr('fill', 'white')
.attr('stroke', 'black')
.attr('stroke-width', 2)
}
function svg (w, h) {
return d3.select('body').append('svg')
.attr('width', w)
.attr('height', h)
.append('svg:g')
.attr('transform', 'translate(' + w / 2 + ',' + h / 2 + ')')
}
// create a necklace from a d3 svg object
necklace(svg(250, 250), 100, 16)