我一直在使用 JavaScript/HTML5 画布开发应用程序。这是一个带有一些代码的 JSFiddle,可以向您展示我在做什么:JSFiddle
正如您在小提琴中看到的,在创建两个点后,光标开始分别捕捉到 90° 和 180°。但是有一个错误,我不知道如何修复它。它完美地捕捉到 90°,除非您离最后创建的点太近,然后它会有点晃动。180° 捕捉是相同的,只是它比 90° 摇晃得更远。他们都使用相同的代码,所以我不知道为什么他们的行为不同,我也不知道如何摆脱这种摇摆。那么问题来了,让我试着解释一下我的一些代码。
我认为搞砸的部分就在顶部,checkAngle
andsnapMouseToAngle
函数。
checkAngle
非常简单,它采用最后两个创建的点和鼠标光标所在的点,测量它们的边长,并使用余弦定律测量当前角度(另外,我不是数学家,如果有更好的方法来做到这一点,那么请赐教)。
snapMouseToAngle
稍微复杂一点。首先它检查当前鼠标预览是水平的还是垂直的。然后它检查角度,将 8 个像素(或我称之为一英尺)添加到当前预览坐标,然后再次检查角度。然后它通过snap
函数(那个巨大的逻辑块)检查鼠标是否在angleSnapDistance
. 如果是,则它从当前角度中减去它应该捕捉到的角度,并将该值放入leftOver
. leftOver
然后除以差值,给我们留下一个从鼠标位置减去的数字。
那么我做错了什么?我不知道是什么导致它像那样摇晃,但我肯定会感谢任何能告诉我如何解决它的人。谢谢!