Javascript 为什么需要增加270度来纠正旋转?

Javascript 为什么需要增加270度来纠正旋转?,javascript,trigonometry,angle,vector-graphics,game-development,Javascript,Trigonometry,Angle,Vector Graphics,Game Development,计算两点之间的角度似乎与DOM旋转不一致 我已经编写了代码来计算两点之间的角度。我使用HTML画布在点之间绘制一条线,并显示一个DOM元素,该元素具有一个箭头字符,我旋转该箭头字符以指示向量的方向。我不清楚为什么需要增加270度来校正箭头的位置 见下面这行:radians+=(3*Math.PI/2);//为什么是270度? class Vector { constructor(x=0, y=0) { this.x = x; this.y = y; } angle

计算两点之间的角度似乎与DOM旋转不一致

我已经编写了代码来计算两点之间的角度。我使用HTML画布在点之间绘制一条线,并显示一个DOM元素,该元素具有一个箭头字符,我旋转该箭头字符以指示向量的方向。我不清楚为什么需要增加270度来校正箭头的位置

见下面这行:
radians+=(3*Math.PI/2);//为什么是270度?

class Vector {
  constructor(x=0, y=0) {
    this.x = x;
    this.y = y;
  }  
  angleFromVectors(anchor, point) {
    return Math.atan2(anchor.y - point.y, anchor.x - point.x);
  }  
  draw(v1, v2) {
    let canvas = document.getElementById('canvas');
    if (canvas.getContext) {
      let ctx = canvas.getContext('2d');      
      ctx.moveTo(v1.x, v1.y);
      ctx.lineTo(v2.x, v2.y)
      ctx.stroke();      
    }
  }
  rotateArrow(degrees) {
    let arrow = document.getElementById('arrow');
    arrow.style.webkitTransform = 'rotate('+ degrees + 'deg)'; 
  }
}

let v1 = new Vector(180, 180);
let v2 = new Vector(100, 190);
let vector = new Vector();

let radians = vector.angleFromVectors(v1, v2);
radians += (3 * Math.PI / 2); // why 270 degrees?
let degrees = radians * (180 / Math.PI);

console.log(`radians: ${radians}, degrees: ${degrees}`);
vector.draw(v1, v2);
vector.rotateArrow(degrees);

这里的代码笔:

箭头是字符
。因为它指向上,如果你想让它指向左边,你需要旋转它。您还可以将其旋转90度


顺便问一下,你实际上是在旋转它,因为零度是正确的吗?我用:
radians-=1.570796;//90度以校正向上箭头
,因为您的箭头指向上,在JS中
0deg
指向右侧,并且
angleFromVectors
计算错误方向的角度(另一个
180deg