如何沿长度为 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 ]
第一个点距离0
9
,但最后一个点距离100
4
。
将 i / count
更改为 (i + 1) / (count + 1)
。
我从 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 ]
第一个点距离0
9
,但最后一个点距离100
4
。
将 i / count
更改为 (i + 1) / (count + 1)
。