线性排列算法

gku*_*erz 5 javascript

我不确定标题是否正确.

我有几个标签在y范围内设置了它们的位置:

range = [0, 100px]
Run Code Online (Sandbox Code Playgroud)

例如:5个标签位置:

positions = [5px, 6px, 8px, 72px, 76px]
Run Code Online (Sandbox Code Playgroud)

现在我希望我的算法纠正这些位置,让它们彼此之间的距离不要超过10px,并进行最小的修正.

我期待像这样调用我的函数:

result = calculateNewPositions(range, positions, min(10px, 100px / positions.length))
Run Code Online (Sandbox Code Playgroud)

并且在这种情况下应该是:

[0px, 10px, 20px, 69px, 79px]
Run Code Online (Sandbox Code Playgroud)

这个alghoritm的名称是什么或如何实现?

lip*_*ipp 1

calculateNewPositions = function(positions, minDelta) {
   var newPositions = [0]
   positions.slice(1).forEach(function(pos, index) {
     var delta = positions[index + 1] - positions[index]
     newPositions.push(newPositions[index] + Math.max(delta, minDelta))
   })
   return newPositions
}
Run Code Online (Sandbox Code Playgroud)

https://tonicdev.com/lipp/pos-diff