JSFiddle - React, Tailwind, and code Playground
JavaScript
//массив координат точек пути
var points = [{x:10, y:5}, {x:15, y:25}, {x:17, y:3}, {x:25, y:6}, {x:20, y:20}, {x:27, y:30}, {x:26, y:40}];
//количество точек
var pointsnum = points.length;
//массив расстояний
var path = [];
//в первой точке расстояние до начала пути, естесвенно, нулевое
path[0] = 0.0;
//заполняем остальные расстояния, используя теорему пифагора.
for (var it = 1; it < pointsnum; it++) {
path.push(path[it - 1] + Math.sqrt(Math.pow(points[it].x - points[it - 1].x, 2) + Math.pow(points[it].y - points[it - 1].y, 2)));
}
//надо найти точку, в которой пройдено 35% пути.
var procentswalken = 0.35;
var abswalken = path[pointsnum - 1] * procentswalken;
//находим первую точку, в которой пройденное расстояние больше
for (it = 0; it < pointsnum; it++) {
if(path[it] >= abswalken) {
break;
}
}
//искомая точка находится между точками it и it - 1
//пройденное расстояние до ближайшей пройденной точки
abswalken = abswalken - path[it - 1];
var stoppoint = {x:0, y:0};
//находим координаты
stoppoint.x = points[it - 1].x + abswalken * (points[it].x - points[it - 1].x) / (path[it] - path[it - 1]);
stoppoint.y = points[it - 1].y + abswalken * (points[it].y - points[it - 1].y) / (path[it] - path[it - 1]);
//выводим координаты
alert('stoppoint(' + stoppoint.x + ', ' + stoppoint.y + ')');