Как сгенерировать массив из n равноудаленных точек вдоль отрезка длины x? - PullRequest
2 голосов
/ 09 июля 2020

Я перенес эту функцию из ответа 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 ]

Первая точка находится 9 от 0, но последняя точка 4 от 100.

1 Ответ

5 голосов
/ 09 июля 2020

Измените i / count на (i + 1) / (count + 1).

...