如何沿长度为 x 的线段生成 n 个等距点的数组?

How to generate array of n equidistant points along a line segment of length x?

我从 python 对本网站类似问题的回答移植了此功能。然而,虽然这些点彼此等距,但它们并不在线上。

第一个点在0,最后一个点在83(线段的终点是100)。

如何使这一行点居中?

具体来说,我希望第一个点与 0 的距离与最后一个点与 100 的距离相同。

'use strict';

function generatePoints(count, length) {
  const points = []
  for (let i = 0; i < count; i++) {
    const a = i / count;
    const x = a * length;
    points.push(Math.round(x));
  }
  return points;
}

const points = generatePoints(6, 100);

console.log(points);
// [ 0, 17, 33, 50, 67, 83 ]

我试过了,但它似乎没有像我预期的那样工作:

for (let i = 0; i < points.length; i++) {
  points[i] += (points[1] / 2);
  points[i] = Math.round(points[i]);
}

console.log(points);
// [ 9, 26, 46, 63, 80, 96 ]

第一个点距离09,但最后一个点距离1004

i / count 更改为 (i + 1) / (count + 1)