Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将像素距离转换为步长_Javascript - Fatal编程技术网

Javascript 如何将像素距离转换为步长

Javascript 如何将像素距离转换为步长,javascript,Javascript,我想根据容器宽度和线相对于容器的距离来计算步长 我能够计算出步长,但最小步长是0。然而,在我的场景中,最小步长可以大于0,到目前为止,我还没有弄清楚如何在计算中烘焙它 检查下面的完整示例。 //小示例: //在这段代码中,直线距离0对应于步骤0,但我希望它是 //对应于步骤100,因为这应该是最小步骤。 var lineDistance=0;//二甲苯 var maxDistance=704;//二甲苯 var-minSteps=100//步 var maxSteps=500//步 var st

我想根据容器宽度和线相对于容器的距离来计算步长

我能够计算出步长,但最小步长是0。然而,在我的场景中,最小步长可以大于0,到目前为止,我还没有弄清楚如何在计算中烘焙它

检查下面的完整示例。

//小示例:
//在这段代码中,直线距离0对应于步骤0,但我希望它是
//对应于步骤100,因为这应该是最小步骤。
var lineDistance=0;//二甲苯
var maxDistance=704;//二甲苯
var-minSteps=100//步
var maxSteps=500//步
var step=数学楼层((线距离/最大距离)*maxSteps);
阶跃计算应返回的静态值的一些示例:

最终目标是能够用动态值计算步长

  • 如果线距离
    0
    ,则
    步骤
    返回
    100
  • 如果线距离
    10
    ,则
    步骤
    返回
    105
  • 如果线距离
    352
    ,则
    步骤
    返回
    300
    • 352是最大距离的一半
    • 300最小和最大步长之间的中间点
  • 如果线距离
    704
    ,则
    步骤
    返回
    500

如果我理解正确,您只需要将距离插值到步长,然后您需要首先找到两个间隔的长度:

const distanceLength=maxLength-minLength;//在您的情况下,可能是maxLength-0
常量步长=最大步长-分钟步长;
然后将值标准化(查找距离差):

const distance diff=lineDistance-minDistance;//在您的情况下,可能只是线距离
然后将其转换为绝对单位:

const distanceRate=distanceDiff/distanceLength;
然后转换为以下步骤:

const stepsDiff=距离率*步长长度;
并以步长最小值进行换档:

const steps=minSteps+stepsDiff;

就是这样!所以我从这个
Math.floor((lineDistance/maxDistance)*maxSteps)开始到这个→ <代码>数学楼层(分钟步数+(线距离/最大距离)*(最大步数-分钟步数))。我“缩小”了你的代码,使之更适合你,并从计算中删除了MindDistance,因为在我的例子中它总是0。不,不,这非常有用。我只是想确保有一个使用原始代码的工作示例,供偶然发现这个问题的人使用。