path转为坐标

本文介绍了如何使用JavaScript在SVG路径上获取均匀分布的坐标点,通过计算路径长度并将其划分为指定数量的段,实现对路径的精细控制。作者提供了详细的步骤和一个名为`pathToPoints`的函数实现这一功能。
摘要由CSDN通过智能技术生成

获取path上的坐标点

思路:

获取路径的长度path.getTotalLength(),将长度平均分成N段,每一段切点坐标是多少;

步骤:

1,准备一个路径

var pathData = 'M10,10C20,20,30,10,40,20S50,30,60,20Q70,10,80,20T90,30'

2,创建一个path,

var path = document.createElementNS("http://www.w3.org/2000/svg", "path")

3,将pathData赋值给属性

path.setAttribute("d", pathData);

4,获取路径长度

var pathLen = path.getTotalLength()

5、将路径平均分成N段

var numPoints = 100

// 如路径长度pathLen的100分之5段的分隔点

var i = 5
pathLen * (i/numPoints)或者(pathLen*i)/numPoints

6,求某一分隔点坐标

var i = 5
var numPoints = 100
path.getPointAtLength((i * pathLen) / numPoints)

完整举例

function pathToPoints (pathData, numPoints) {
	if (!pathData) return []
	  
	// 创建一个Path元素  
	var path = document.createElementNS("http://www.w3.org/2000/svg", "path");  
	path.setAttribute("d", pathData);

	var pathLen = path.getTotalLength()
	var points = []
// numPoints可以作为缺省值,取长度的30%个分隔点,即,取多少个坐标
	if (!numPoints) {
		numPoints = parseInt(pathLen * 0.3) || 4
		numPoints = numPoints > 500 ? 500 : numPoints
	}
// 循环求出每一段分隔点的坐标
	for (let i = 0; i < numPoints; i++) {
		let p = path.getPointAtLength((i * pathLen) / numPoints);
        points.push(p)
	}
			
	return points;  
}


//举例调用:

var pathData = 'M10,10C20,20,30,10,40,20S50,30,60,20Q70,10,80,20T90,30'
var numPoints = 100 // 平均分隔成多少段,求每个分隔点坐标,即,取多少个坐标

输出:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值