有没有什么方法可以在javascript中调用具有x和y co-ord的函数和一个方向(角度度),它将返回一组已经过&#的新的co-ords 39;移动后'从原始合作方向给出的10px?我环顾四周,但我能找到的只是获得两个角度的方法。
如果措辞严重,请抱歉。
答案 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 的其他解决方案在cos
和sin
中被简单地扭曲了。它们仅适用于 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在你的情况下。