在javascript中,我是否有办法调用一个函数,传入x和y坐标以及方向(以角度表示),并返回一组新的坐标,这些坐标已经从原始坐标按给定方向移动了10px? 我找了一圈,但我能找到的都是获取两个给定坐标的角度的方法。
在javascript中,我是否有办法调用一个函数,传入x和y坐标以及方向(以角度表示),并返回一组新的坐标,这些坐标已经从原始坐标按给定方向移动了10px? 我找了一圈,但我能找到的都是获取两个给定坐标的角度的方法。
该函数返回一个包含新坐标的数组[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]
}
!==
运算符,!=
就足够了,因为你知道你正在将它与一个字符串进行比较,并且你知道 typeof
返回一个字符串。 - Ryanfunction getRelativeVector(angle, length, xOffset, yOffset) {
angle = angle * Math.PI / 180;
return {
X:length * Math.sin(angle) + xOffset,
Y:length * Math.cos(angle) + yOffset
};
}
X = length * sin(angle) + xLocation
- Y = length * cos(angle) + yLocation
在您的情况下,x坐标的偏移量为L*cos(a)
,y坐标的偏移量为L*sin(a)
,其中a
是角度(“给定方向”),L
为10像素。
10*Math.cos(90)
时,它返回-4.480736161291702,如果90度是正确的,那不应该只是10吗? - BobdinatorMath.cos()
和 Math.sin()
的参数是以弧度为单位的角度,因此您需要将角度转换为弧度(请参见我的代码中的注释)。 - Marcus McLean