gpt4 book ai didi

javascript - 想出一个算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:24 25 4
gpt4 key购买 nike

我的 Canvas 上有一个圆圈。鼠标位置是相对于 Canvas 计算的。我希望圆圈在鼠标距离 <=100px 距离时移动。开始移动的最小距离是 100px,0.5px/tick。它在 20 像素的距离处上升到 2 像素/刻度。

基本上,鼠标离圆圈越近,圆圈应该移动得越快。

到目前为止,当距离小于或等于 100 时,我所拥有的移动圆圈——(我使用的是 easeljs 库)

function handleTick() {
distance = calculateDistance(circle, mX, mY);
if (distance<=100) {
circle.x += 0.3;

stage.update();
}
}

我想要什么

function handleTick() {
distance = calculateDistance(circle, mX, mY);
if (distance<=100) {
circleSpeed = // equation that takes distance and outputs velocity px/tick.
circle.x += circleSpeed;

stage.update();
}
}

所以我认为这是一道数学题,并将其发布到 math exchange 上,但至今没有答案。我尝试在谷歌上搜索几个主题,例如:“如何得出一个关系的方程式”,因​​为我有定义域 (100, 20) 和范围 (0.5, 2)。什么函数可以关联它们?

问题是我的数学不好,这些数字甚至可能没有关系 - 我不确定我在这里寻找什么。

我是否应该编写一个随机算法“circleSpeed = 2x + 5x;”并希望它能满足我的要求?或者是否可以像我那样做 - “我希望这些是最小值和最大值,现在我需要为它想出一个方程式”?

指向正确方向的指针会很棒,因为到目前为止我是在黑暗中拍摄。

最佳答案

如果我没理解错的话,你希望 circleSpeeddistance 的函数,这样

    距离100时,
  • circleSpeed0.5
  • 距离20时,
  • circleSpeed2

有无穷大函数可以满足这一点,所以我假设是线性的。

斜率为m且包含点(x₀,y₀)的直线方程为

y = m (x-x₀) + y₀

但在这种情况下,您有两个点,(x₁,y₁)(x₂,y₂),因此您可以用

    y₂ - y₁
m = ───────
x₂ - x₁

所以直线的方程是

    y₂ - y₁
y = ─────── (x - x₁) + y₁
x₂ - x₁

有了你的数据,

    0.5 - 2 
y = ──────── (x - 20) + 2 = -0.01875 x + 2.375
100 - 20

因此,

circleSpeed = -0.01875 * distance + 2.375

关于javascript - 想出一个算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com