【发布时间】:2015-08-04 08:33:05
【问题描述】:
我想使用圆弧连接两个 SVG 点(例如两个圆的中心)。如果只有一个连接,则线 (<path>) 将是直的。如果有两个连接,则两者都将被舍入并且是对称的,这样:
所以,其实规则很少:
- 一切都应该与连接两点的假想线对称。
-
从1开始,很明显如果连接数为:
- 奇怪:我们不显示直线
- 甚至:我们显示直线
应该有一个值
k,它定义了相同点之间的两个连接之间的距离。-
通过椭圆弧中间的切线应该与连接两点的直线平行。很明显,直线的中间会垂直于切线。
我正在努力获得一个公式来计算 A 元素中的 A 参数。
到目前为止我所做的是:
<path d="M100 100, A50,20 0 1,0 300,100" stroke="black" fill="transparent"/>
-
M100 100很清楚:这是起点(移动到 100,100) - 最后两个数字也很清楚。路径以
300,100结尾 - 我还看到,如果我输入
0而不是20,我会得到一条直线。 - 如果我将
1,0替换为1,1,路径就会翻转。
我不知道如何计算 A 参数。我读了the docs,但我仍然不清楚这个想象。如何计算这些值?
svg {
width: 100%;
height: 100%;
position: absolute;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<?xml version="1.0" standalone="no" ?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<!-- Connect A(100,100) with B(300, 100) -->
<path d="M100 100, A50,0 0 1,0 300,100" stroke="black" fill="transparent" />
<path d="M100 100, A50,20 0 1,0 300,100" stroke="black" fill="transparent" />
<path d="M100 100, A50,20 0 1,1 300,100" stroke="black" fill="transparent" />
<path d="M100 100, A50,30 0 1,0 300,100" stroke="black" fill="transparent" />
<path d="M100 100, A50,30 0 1,1 300,100" stroke="black" fill="transparent" />
<!-- A(100, 100) B(300, 400) -->
<path d="M100 100, A50,0 57 1,0 300,400" stroke="black" fill="transparent" />
<path d="M100 100, A50,20 57 1,0 300,400" stroke="black" fill="transparent" />
<path d="M100 100, A50,20 57 1,1 300,400" stroke="black" fill="transparent" />
</svg>
</body>
</html>
我正在使用 SVG.js 创建路径。
【问题讨论】:
-
请注意,在您的示例图片中,通过省略中心线,您的“偶数连接”线会导致弧之间的间距是其他弧间距的两倍。也许这就是你想要的,但我觉得这很奇怪。
标签: javascript svg svg.js