javascript - 这个图的等效 Javascript 方程式是什么?

标签 javascript math equations

我目前正在制作一个界面,其中我的图像链接倾向于鼠标光标。这与其说是一个严肃的项目,不如说是为了好玩,但是尽管如此,我从中学到的信息在将来还是很有用的。现在我有几个变量设置...

  • diffx/y = 光标与链接原始位置的距离(以像素为单位)。如果光标移动到链接原始位置(已计算)的左侧或上方,则此值变为负数。
  • spacex/y = 我希望光标和链接之间的距离
  • calcx/y = 计算出的数字将被添加到链接的 'style.top' 和 'style.left'

    calcx = diffx - spacex
    calcy = diffy - spacey
    
    link.style.top = calcx
    link.style.top = calcy
    

如果我设置 spacex/y = 0 链接以光标为中心
如果我设置 spacex/y = diffx/y 链接设置到它的正常位置

我的目标是让链接稍微向光标倾斜(可能距离原始位置最多 40 像素)和
随着光标靠近链接,链接会慢慢回到原来的位置。
当光标进入 100px 时,链接应该(平滑地)跳向光标,就好像在说“选我!”

下面是方程式的图形。

Graph

我需要一种方法将其写成 javascript 等式。我已经有一段时间没有学习代数了,而且我很确定我们没有复习任何看起来像这样的东西。我猜它在某处有一个指数和一个条件,但我不太确定。如果您能解决这个问题,我将非常感激(更不用说印象深刻了)。

谢谢的帮助!

最佳答案

您肯定需要一个分段函数(您所说的“条件函数”)。中间部分似乎是 y = Ax^3 或 y = Ax^5 形式的奇次多项式,对于 A 的某个小值(选择使 x = 150 时 y = 150)。 |x| 的曲线看起来基本上是线性的>= 200,即 y = x + B for x >= 200 和 y = x - B for x <= -200。 150 <= |x| 之间的转换<= 200 似乎有点棘手,就像移动的指数或二次方。但是你可以从这个开始(伪代码):

if (x < -150) {
    y = x;
} 
else if (x < 150) {
    y = (1.0/22500.0) * pow(x, 3);
}
else {  // x > 150
    y = x;
}

请注意,这忽略了 x = 150 和 200 之间的转换,并相应地假设我上面提到的常数 B 为零。但这可能会让您入门。

编辑:

在查看我的函数图后,我认为 5 阶多项式更符合您想要的形状。在这种情况下,中间函数将为 y = (1.0/506250000.0) * pow(x,5)。结果如下。顺便说一下,对于三次函数,常数值相当于 150^-2,对于五次函数,常数值相当于 150^-4。

Graph of cubic and quintic functions

关于javascript - 这个图的等效 Javascript 方程式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864857/

相关文章:

javascript - AngularJS ng-重复 : Dynamically render/bind canvas inside loop

math - Racket /方案中的总和平方

javascript - 使变量值为正

python - 如何在 QTextEdit 中显示数学方程式?

javascript - 函数和方程混淆

JavaScript/PHP : Get referral key URL

javascript - 当鼠标悬停在表格上时,复选框会向左移动

javascript - AngularJS:Hashbang URL 在完全刷新时不断附加到自身

Java 数字框架

python - 使用 scipy 稀疏矩阵求解方程组