如何将点以指定角度平移到指定距离?

Ras*_*hid 3 javascript math geometry trigonometry

我想沿着角度以度为单位的直线将点转换为特定距离。

var initialPoint = [0,0];   //Starting Point
var distance = 100;         //Distance in pixels to be translated
var degree = 45;            //Direction of move
var translatedPoint = moveByDegree(initialPoint, degree, distance);

function moveByDegree(initialPoint, degree, distance)
{
    //formula to generate translatedPoint by degree & distance
    // . . . 

    return translatedPoint;
}
Run Code Online (Sandbox Code Playgroud)
  • 0度应向上移动。
  • 180度应向下移动。
  • 90度应向右移动。
  • 270度应向左移动。
  • 其他角度将对应于对角线方向。

给我简单的算法或JavaScript代码。

Ali*_*suf 5

您必须指定初始点,角度和运动单位。

Math.radians = function(degrees) {
  return degrees * Math.PI / 180;
};

function move(point, angle, unit) {
  var x = point[0];
  var y = point[1];
  var rad = Math.radians(angle % 360);

  x += unit*Math.sin(rad);
  y += unit*Math.cos(rad);

  return [x, y];
}

move([0,0], 180, 100);  // [0, 100]
Run Code Online (Sandbox Code Playgroud)