Javascript 如何使用d3.js创建与圆/项链相交的多多边形?

Javascript 如何使用d3.js创建与圆/项链相交的多多边形?,javascript,d3.js,Javascript,D3.js,想象一条带珠子的项链。我需要一个d3的解决方案,可以帮助绘制这个。 我们使用了组合项链和手镯: 但我们想扩展它。所以我又看了看,发现了圆和多边形的交点 然而,我不知道圆形多边形相交是否是最好的方法。我正在d3.js中寻找有助于解决问题的建议和解决方案 珠子/多边形的数量可以是100秒或1000秒,颜色也可以不同。我不知道你的问题是否与d3的显示项链有关。如果是这样,我的解决方案如下: 没有d3布局可以做到这一点,但是如果你坐下来用铅笔和纸,用一本旧的三角学教科书来计算给定数量的圆在圆中的节点的

想象一条带珠子的项链。我需要一个d3的解决方案,可以帮助绘制这个。 我们使用了组合项链和手镯: 但我们想扩展它。所以我又看了看,发现了圆和多边形的交点

然而,我不知道圆形多边形相交是否是最好的方法。我正在d3.js中寻找有助于解决问题的建议和解决方案


珠子/多边形的数量可以是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)