Javascript 这句话的意思是什么;x*Math.cos(角度)-y*Math.sin(角度)“;?

Javascript 这句话的意思是什么;x*Math.cos(角度)-y*Math.sin(角度)“;?,javascript,expression,trigonometry,Javascript,Expression,Trigonometry,上述表达式取自以下方法。 我知道要围绕中心旋转一个点,我们必须 将点移动到原点 进行旋转和旋转 向后移动点 但我不明白的是: r[0] = x * Math.cos(angle) - y * Math.sin(angle); ^ | why we use the minus sign here? r[1] = x * Math.sin(

上述表达式取自以下方法。 我知道要围绕中心旋转一个点,我们必须

  • 将点移动到原点
  • 进行旋转和旋转
  • 向后移动点
  • 但我不明白的是:

    r[0] = x * Math.cos(angle) - y * Math.sin(angle);
                               ^
                               |
                              why we use the minus sign here?
    
    r[1] = x * Math.sin(angle) + y * Math.cos(angle);
                               ^
                               |
                                And why here we use plus sign instead of minus?
    
    
    
    Vec2.prototype.rotate = function (center, angle) {
    //rotate in counterclockwise
    var r = [];
    var x = this.x - center.x;
    var y = this.y - center.y;
    r[0] = x * Math.cos(angle) - y * Math.sin(angle);
    r[1] = x * Math.sin(angle) + y * Math.cos(angle);
    r[0] += center.x;
    r[1] += center.y;
    return new Vec2(r[0], r[1]);
    };
    


    这本书本来应该很棒,但它没有解释它简单地说出的大部分代码。

    我明白了!刚刚看了Peyam博士在transformation matrix上的视频

    为了得到x'和y',我们将变换矩阵乘以当前坐标(x,y)

    你在读哪本书?它们是系统的组成部分。我感兴趣的部分是:x′=xcosθ−伊辛θ这本书是《构建2d游戏物理引擎》@EllsonMendes:Niet的评论有一个链接可以解释这一点。本质上,
    (x,y)
    通过角度
    θ
    的逆时针旋转可以通过
    x
    y
    x'
    y'
    的转换来完成,一旦你标准化到
    (0,0)
    的中心。