首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3.js受形状约束的力定向布局

问d3.js受形状约束的力定向布局
EN

Stack Overflow用户
提问于 2013-02-26 21:52:34
回答 1查看 1.6K关注 0票数 10

我想知道是否有一种方法可以用d3.js创建一个以力为导向的布局,并以这样的方式限制它的任意形状

  • 所有节点都是等价地分布在中的中的形状和
  • 边界和节点之间的距离等于节点之间的距离。

我希望已经有这样的解决办法。否则,我的想法是从力定向布局开始,并在每次迭代中检查从节点到边界的距离。你那边有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-27 11:58:51

你的主意也是我的。在滴答函数中,您可以添加额外的力量。这是我的建议(未经测试):

代码语言:javascript
复制
force.on('tick', function(e) {

  node
    .each(calcBorderDistance)
    .attr('transform', function(d) {
      d.x -= e.alpha*(1/Math.pow(d.borderDistance.x,2);
      d.y -= e.alpha*(1/Math.pow(d.borderDistance.y,2);
      return 'translate(' + d.x + ',' + d.y + ')'; // Move node
    });
});

function calcBorderdistance(d) {
  // Insert code here to calculate the distance to the nearest border of your shape
  var x = ..., y = ...;
  d.borderDistance = {'x':x,'y':y};
}

本文利用模拟退火很好地绘制图形中的公式与最近的边界函数之间的二次逆距离是松散的。下图说明了本文中的方法如何影响框所包围的绘图节点:

​

​

这幅图说明了不同约束条件下的情况,涉及节点之间的链接:

​

​

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15100060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档