javascript - 跟踪 svg 路径(以离散步骤获取 x,y 坐标)
问题描述
如何在 SVG 路径上找到多个(均匀分布的)点?
我发现它是在这个代码笔上完成的:
var bezierData = MorphSVGPlugin.pathDataToBezier("#anim_path");
但是,它依赖于一些专有代码MorphSVGPlugin。
此功能是否有任何非专有代码(路径输入,坐标输出)?
解决方案
我会这样做:我需要知道路径的长度 ( thePath.getTotalLength()
) 和段数:在这种情况下为 10。然后我使用方法计算路径上点的位置getPointAtLength
最后我为路径上的每个点画一个圆。
var SVG_NS = 'http://www.w3.org/2000/svg';
let pathLength = thePath.getTotalLength();
let nSegments = 10;
// the segment length:
let segment = pathLength/nSegments;
for( let i = 0; i<=nSegments; i++){
let p = thePath.getPointAtLength(i*segment);
let o = {r:2, cx:p.x,cy:p.y}
drawCircle(o, svg)
}
function drawCircle(o, parent) {
var circle = document.createElementNS(SVG_NS, 'circle');
for (var name in o) {
if (o.hasOwnProperty(name)) {
circle.setAttributeNS(null, name, o[name]);
}
}
parent.appendChild(circle);
return circle;
}
svg{border:1px solid;}
#thePath{fill:none; stroke:black;}
<svg id="svg" viewBox="-10 20 120 60">
<path id="thePath" d="M0,75Q33,75 50,50 T100,25"/>
</svg>
推荐阅读
- sql-server - 将 2 个子/父列拆分(非规范化)为多个列(基于父级的多少)
- android - 使用 aapt2 编译 XML 文件失败 - “文件路径无效”
- sql - 如何在执行计算时迭代 SQL 中的值?
- reactjs - 用于 img 单选按钮的 React 使用表单
- azure-devops - 如何在 VSTS 构建定义中使用 $(Rev:r)?
- php - PHP:选择未写入 HTML
- c++ - 在 QNX 中插入 std::basic_ostream 实例化的输出时出现内存错误
- javascript - 来自 infogram 的奇怪的 javascript 嵌入代码
- c - 二进制文件打印键搜索 c
- django - 编辑时 Django 管理员内联唯一约束违规