d3:计算两个节点之间的线的中点,画一条从它到一个新节点成90度角的线
d3: Calculate midpoint of line between two nodes, draw line extending at 90 degree angle from it to a new node
在d3中,假设有node1和node2,由水平相邻的圆表示。有一条短的水平线(我想是一条路径)连接节点1和节点2。
如何:(1) 找到该直线/路径的中点,以及(2) 为该中点指定一个新的名称或ID,我可以通过编程进行处理,这样我就可以(3) 绘制从中点到新节点3、节点4和节点5的新垂直线/路径?
您可以找到每条线的中点,并使用下面的代码绘制从该点到其他节点的线。JSFiddle
function drawLines(d){
var x1 = nodes[d.source].x;
var x2 = nodes[d.target].x;
var y1 = nodes[d.source].y;
var y2 = nodes[d.target].y;
var otherNodes = nodes.filter(function(n,i){ return i!=d.source || i!=d.target });
otherNodes.forEach(function(otherNode){
svg.append("line")
.attr("x1",function(d){ return otherNode.x; })
.attr("y1",function(d){ return otherNode.y; })
.attr("x2",function(d){ return (x1+x2)/2; })
.attr("y2",function(d){ return (y1+y2)/2; })
.attr("class","line");
});
}
linksEls.each(drawLines);
相关文章:
- 节点导出返回一个空对象
- 将节点数据分配给另一个变量jstree
- 无法获取vis.js最后一个或第一个选定的网络节点
- 文件的节点自动化移动到另一个文件夹中
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- 使用jQuery+Javascript识别一个空文本节点
- 仅首先需要使用jasmine从节点添加一个文件
- 如果某个值在另一个节点中,我如何每秒自动单击一个链接
- 只需添加一个'允许跨来源请求'到我的节点应用程序工作
- 查找与锁定和更新调度相关的一个或两个节点模块
- XPath以基于另一个节点按位置选择节点's的位置
- 节点发布错误对象的第一个“属性”
- 如何以编程方式在 jsTree 中选择一个节点并打开所有父节点
- 节点模块对象范围:在所有函数之间共享一个对象
- 节点.js将文件从多个目录复制到一个目录
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 选择一个具有纯 js 与C++ 的节点.js库,并在实现上添加
- 在节点中.js“模块”始终是一个对象
- 如何给子节点一个'id'在jtree中使用JSON
- XML DOM中缺少节点——一个简单的示例