我不确定标题是否正确.
我有几个标签在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的名称是什么或如何实现?
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