计算鼠标速度的sript的概念

时间:2016-06-08 00:44:37

标签: javascript mouse velocity

大家好:):有人能解释一下这段代码吗?我想了解但是没什么可做的。为什么这行代码?

Math.sqrt(x_dist*x_dist+y_dist*y_dist)/interval;

这还不够吗?

x_dist+y_dist/interval;

我不理解这段代码的概念......

https://jsfiddle.net/vnodkumar1987/ER8qE/

3 个答案:

答案 0 :(得分:1)

第一个例子计算斜边,这样就可以实现鼠标矢量的绝对速度值。

除非x_dist和y_dist都是正数,否则第二个示例将给出错误的结果。换句话说,如果你向下和向左或向上和向右移动,第二个例子将具有减法效果,并不代表真正的整体速度。在向上和向左的情况下,速度不仅成比例地不正确(仅用于比较目的),而且还导致您必须考虑的负号。 (我假设0,0代表鼠标区域的左上角,x_max,y_max代表右下角。)

如果您只是缩放比例速度,则可能不需要Math.sqrt,但如果您想知道真实的像素/间隔,肯定是这样。您还必须考虑到您正在使用的变量容器有多大,但我确信它们都适合双重...除非您正在寻找极高的精度。

想象一下,你沿着一条直线前行,这样你最终会在西边3英里的地方结束,而在1小时的时间里南边4英里。速度答案不是3 + 4 =每小时7英里,也不是-3 + 4 =每小时1英里。绝对速度的正确答案是斜边,即5英里/小时。 SQRT(西^ 2 +南^ 2)

示例#1将是正确的代码。如果您可以忽略该符号,则可以大致使用示例#2,并且您需要快速执行代码。

答案 1 :(得分:0)

你正在制作一个毕达哥拉斯三角形,其中两个catethus是 x_dist y_dist ,它们是鼠标在每一帧X和Y轴上移动的距离。这行代码的作用是获取鼠标的delta位置向量的大小,并将其除以某个标量值。

另请注意,sqrt(a ^ 2 + b ^ 2) NOT 等于a + b。

编辑:不是速度,而是增量位置。

答案 2 :(得分:0)

速度为distance_travelled/time_taken

diagram

假设指针从(x1,y1)移动到(x2,y2),如上图所示。行进的距离不是x和y距离的总和。

总结x和y假设指针从(x1,y1)变为(x2,y1),然后从(x2,y1)变为(x2,y2)。即2条蓝线的长度之和。但你需要的是黑线的长度。

实际行进距离为d,如图所示。使用Pythagorean theoremd^2 = x_dist^2 + y_dist^2

这将为您提供速度问题中的代码行

Math.sqrt(x_dist*x_dist+y_dist*y_dist)/interval;