计算给定角度和长度的矢量

时间:2014-11-15 21:20:22

标签: javascript angle

有没有什么方法可以在javascript中调用具有x和y co-ord的函数和一个方向(角度度),它将返回一组已经过&#的新的co-ords 39;移动后'从原始合作方向给出的10px?我环顾四周,但我能找到的只是获得两个角度的方法。

如果措辞严重,请抱歉。

3 个答案:

答案 0 :(得分:6)

此函数返回新坐标的数组[xCoord, yCoord]:

function myFunction(xCoord, yCoord, angle, length) {
    length = typeof length !== 'undefined' ? length : 10;
    angle = angle * Math.PI / 180; // if you're using degrees instead of radians
    return [length * Math.cos(angle) + xCoord, length * Math.sin(angle) + yCoord]
}

答案 1 :(得分:1)

我只是想指出,恕我直言,答案不正确。我创建了一个 JSFiddle,表明正确的实现必须是这样的:

function getRelativeVector(angle, length, xOffset, yOffset) {
    angle = angle * Math.PI / 180; 
    return { 
        X:length * Math.sin(angle) + xOffset, 
        Y:length * Math.cos(angle) + yOffset 
    };
}

此处来自@Audrius 和@Markus 的其他解决方案在cossin 中被简单地扭曲了。它们仅适用于 0 到 45 度之间的角度。

公式为:

  • X = length * sin(angle) + xLocation
  • Y = length * cos(angle) + yLocation

答案 2 :(得分:0)

x坐标的移位为L*cos(a),y坐标移位为L*sin(a),其中a为角度(“给定方向”),L为10 px在你的情况下。