gpt4 book ai didi

javascript - 即使距离和重量设置为零,获得直边线的问题

转载 作者:行者123 更新时间:2023-11-30 06:14:06 25 4
gpt4 key购买 nike

在 cytoscape.js 下,段距离和段权重都设置为 0 的边缘线看起来不是直的,而是以不连贯的之字形(或出租车)方式出现。

边缘是从节点的特定区域绘制的,也绘制到节点的特定区域(通过使用源端点和目标端点)。边缘 build 得很奇怪(而且不直)。如果没有为 source-endpoint 和 target-endpoint 指定任何值,那么边线会像预期的那样直,但我的代码需要使用 source-endpoint 和 target-endpoint。

如果我设置 'segment-weights': 0.5,那么线条构建得更好,但边缘仍然出现额外的点,这再次看起来不一致,因为 'segment-distances' 设置为 0。请注意,我的代码使用曲线样式作为“段”以及段距离和段权重,所以我必须设置这些特定值。

使用以下代码,查看显示边缘线不完全笔直的输出: enter image description here

如果将段权重更改为 0.5,那么我得到了输出。为什么距离为0: enter image description here

我的代码有误吗?

要使边缘线看起来笔直,我需要进行哪些更改?

我的代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Tool</title>
<meta charset=utf-8 />
<script src="cytoscape.min.js"></script>
<style>
body {
font: 14px helvetica neue, helvetica, arial, sans-serif;
}

#cy {
height: 90%;
width: 65%;
position: absolute;
left: 0;
top: 1;
background-color: WHITESMOKE;
border: 5px solid #ddd;
overflow: auto !important;
border-radius: 1.25em;
}
</style>
</head>
<body>
<div id="cy"></div>
<script>
var dataOpticalMap =
{
"nodes": [
{
"data": {"id":"44", "name":"C"},
"position": {"x":729, "y":-25}
},
{
"data": {"id":"84", "name":"A"},
"position": {"x":729, "y":75}
},
],
"edges": [
{
"data": {"id":"96", "source":"84", "target":"44" },
},
]
}

var cy = cytoscape({
container: document.getElementById('cy'),
style: cytoscape.stylesheet()

.selector('node') //Generic style applied for each node irrespective of their type
.css({
'content': 'data(name)',
'text-valign': 'center',
'width': 80,
'height': 30,
'shape': 'barrel',
})
.selector('edge') //Generic style applied for each edge
.css({
'curve-style': 'segments',
'edge-distances': 'node-position',
'segment-distances' : 0,
'segment-weights': 0,
'source-endpoint' : "25% -50%",
'target-endpoint': "25% 50%",
}),

elements: {
nodes:dataOpticalMap.nodes,
edges:dataOpticalMap.edges
},
autolock:false,
layout: {
name: 'preset',
directed: true,
fit: true
}
});
</script>
</body>
</html>

最佳答案

我阅读了 maxkfranz 的评论,但找不到适合我的问题的合乎逻辑的答案。

在我的例子中,source-endpoint 和 target-endpoint 都是以百分比定义的,并且对应于节点中的一个位置。我在下图中指出了位置坐标的一些示例:

enter image description here

在我上面的代码中,源点的位置(即“25% -50%”)位于节点顶行的第一个红点。目标点的逻辑相同。

如果将源点设置为 ("0% -50%") 并将目标点设置为 ("0% 50%") 并保持 : 'segment-distances' : 0,'段权重':0然后,系统按照预期完美绘制了一条垂直直线:

但是当操纵源点和目标点时(即分别为(“50% -50%”)和(“50% -50%”))和段距离和段权重的“0”,线不再直了:

<picture>

现在如果删除段距离和段权重的属性,则线出现偏差,见下文。它实际上应该绘制一条垂直直线。

enter image description here

关于javascript - 即使距离和重量设置为零,获得直边线的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com