我一直在使用JavaScript / HTML5画布处理应用程序。这是一个带有一些代码的JSFiddle,向您展示我正在做的事情:JSFiddle
正如您在小提琴上看到的那样,在您创建两个点后,光标分别开始捕捉到90°和180°。但是有一个错误,我不知道如何解决它。它完美地捕捉到90°,除非你太接近最后创建的点,然后它会摇摆一点。而180°的卡扣是相同的,除了它比90°更加摇摆得更远。他们都使用相同的代码,所以我不知道为什么他们的行为不同,我不知道如何摆脱这种摆动。所以有问题,让我尝试解释一下我的一些代码。
我认为混乱的部分位于顶部,即checkAngle
和snapMouseToAngle
函数。
checkAngle
非常简单,它需要最后两个创建的点和鼠标光标所在的点,测量它们的边长,并使用余弦定律测量当前角度(另外,我“没有数学家,如果有更好的方法,那么请赐教。”
snapMouseToAngle
稍微复杂一些。首先,它检查当前鼠标预览是水平还是垂直。然后它检查角度,将8个像素(或我称之为一英尺)添加到当前预览坐标,然后再次检查角度。然后它通过snap
函数(那个巨大的逻辑块),它检查鼠标是否在angleSnapDistance
内。如果是,则它从当前角度减去它应该捕捉到的角度,并将该值放在leftOver
内。然后将leftOver
除以差值,留下一个数字以从鼠标位置中减去。
那么我做错了什么?我不知道是什么导致它像这样摇晃,但我肯定会感谢任何能告诉我如何解决它的人。谢谢!
答案 0 :(得分:1)
设置pxPerFoot = 1可消除摆动。 pxPerFoot真的有必要吗?它会为观察到的鼠标坐标添加抖动。不过工作很好!