2

我一直在使用 JavaScript/HTML5 画布开发应用程序。这是一个带有一些代码的 JSFiddle,可以向您展示我在做什么:JSFiddle

正如您在小提琴中看到的,在创建两个点后,光标开始分别捕捉到 90° 和 180°。但是有一个错误,我不知道如何修复它。它完美地捕捉到 90°,除非您离最后创建的点太近,然后它会有点晃动。180° 捕捉是相同的,只是它比 90° 摇晃得更远。他们都使用相同的代码,所以我不知道为什么他们的行为不同,我也不知道如何摆脱这种摇摆。那么问题来了,让我试着解释一下我的一些代码。

我认为搞砸的部分就在顶部,checkAngleandsnapMouseToAngle函数。

checkAngle非常简单,它采用最后两个创建的点和鼠标光标所在的点,测量它们的边长,并使用余弦定律测量当前角度(另外,我不是数学家,如果有更好的方法来做到这一点,那么请赐教)。

snapMouseToAngle稍微复杂一点。首先它检查当前鼠标预览是水平的还是垂直的。然后它检查角度,将 8 个像素(或我称之为一英尺)添加到当前预览坐标,然后再次检查角度。然后它通过snap函数(那个巨大的逻辑块)检查鼠标是否在angleSnapDistance. 如果是,则它从当前角度中减去它应该捕捉到的角度,并将该值放入leftOver. leftOver然后除以差值,给我们留下一个从鼠标位置减去的数字。

那么我做错了什么?我不知道是什么导致它像那样摇晃,但我肯定会感谢任何能告诉我如何解决它的人。谢谢!

4

1 回答 1

1

设置 pxPerFoot = 1 会消除摆动。pxPerFoot 真的有必要吗?它为观察到的鼠标坐标增加了抖动。干得好,不过!

于 2012-08-27T18:59:07.307 回答