Javascript 为什么Math.atan2对我来说不正确?

Javascript 为什么Math.atan2对我来说不正确?,javascript,math,rotation,paperjs,atan2,Javascript,Math,Rotation,Paperjs,Atan2,我正在尝试创建一个简单的游戏,其中中心的矩形始终指向鼠标。出于某种原因,当我使用Math.atan2时,我得到的奇怪值,角度永远不会超过3 如果有人能发现我做错了什么,甚至能编辑草图使其正常工作,那就太好了:)这里有三件事: 旋转使用paper.js添加到当前旋转中,要禁用它,需要设置applyMatrix:false 旋转的单位是度,而不是弧度。您需要将您的atan2乘以180/Math.PI 您应该使用player.center而不是view.center 以下是您可以使用的代码: var

我正在尝试创建一个简单的游戏,其中中心的矩形始终指向鼠标。出于某种原因,当我使用Math.atan2时,我得到的奇怪值,角度永远不会超过3


如果有人能发现我做错了什么,甚至能编辑草图使其正常工作,那就太好了:)

这里有三件事:

  • 旋转使用paper.js添加到当前旋转中,要禁用它,需要设置
    applyMatrix:false
  • 旋转的单位是度,而不是弧度。您需要将您的
    atan2
    乘以
    180/Math.PI
  • 您应该使用
    player.center
    而不是
    view.center
  • 以下是您可以使用的代码:

    var player = new Path.Rectangle({
        strokeColor: '#222222',
        strokeWidth: 10,
        fillColor: '#777777',
        size: [100, 80],
        center: view.center,
        applyMatrix: false
    });
    
    function onMouseMove(event) {
        var dx = event.point.x - player.center.x;
        var dy = event.point.y - player.center.y;
        var angle = Math.atan2(dy, dx) * 180 / Math.PI;
    
        console.log(angle);
        player.rotation = angle;
    }
    

    这里有三件事:

  • 旋转使用paper.js添加到当前旋转中,要禁用它,需要设置
    applyMatrix:false
  • 旋转的单位是度,而不是弧度。您需要将您的
    atan2
    乘以
    180/Math.PI
  • 您应该使用
    player.center
    而不是
    view.center
  • 以下是您可以使用的代码:

    var player = new Path.Rectangle({
        strokeColor: '#222222',
        strokeWidth: 10,
        fillColor: '#777777',
        size: [100, 80],
        center: view.center,
        applyMatrix: false
    });
    
    function onMouseMove(event) {
        var dx = event.point.x - player.center.x;
        var dy = event.point.y - player.center.y;
        var angle = Math.atan2(dy, dx) * 180 / Math.PI;
    
        console.log(angle);
        player.rotation = angle;
    }
    

    你想在这里做什么?现在,您只需根据两点在屏幕上的位置,而不是
    dx
    dy
    或鼠标位置本身,获取两点的反正切<代码>数学.atan2在这里似乎工作正常。我希望矩形旋转以面向鼠标。我想我遗漏了什么/做了错事?请粘贴代码。我不点击外部链接。你懂三角学吗?切线函数?如何变换点?不确定纸张js,但如果它需要度,则乘以math.tan(x,y)*180/math.Pi,您想在这里做什么?现在,您只需根据两点在屏幕上的位置,而不是
    dx
    dy
    或鼠标位置本身,获取两点的反正切<代码>数学.atan2在这里似乎工作正常。我希望矩形旋转以面向鼠标。我想我遗漏了什么/做了错事?请粘贴代码。我不点击外部链接。你懂三角学吗?切线函数?如何变换点?不确定纸张js,但如果它期望度,则乘以math.tan(x,y)*180/math.pi