找到具有原点,角度和半径的点的位置
find position of a point with origin, angle and radius
我在尝试制作的 javascript 游戏中遇到了三角函数问题。
以原点 (xa,ya) 为半径和终点 (ya,yb) 我需要找到新点的位置。
//calculate a angle in degree
function angle(xa, ya, xb, yb)
{
var a= Math.atan2(yb - ya, xb - xa);
a*= 180 / Math.PI;
return a;
}
function FindNewPointPosition()
{
//radius origine(xa,xb) destination(ya,yb)
var radius=30;
var a = angle(xa, xb, ya, yb);
newpoint.x = xa + radius * Math.cos(a);
newpoint.y = ya + radius * Math.sin(a);
return newpoint;
}
想象一张图片,因为我没有足够的声誉来 post 一张图片:
蓝色方块是地图(5000x5000),黑色方块(500x500)是玩家看到的(hud)。
Cross(400,400) 是起点,sun(4200,4200) 是终点。
红点 (?,?) 指示玩家朝哪个方向寻找太阳..
但是太阳和十字架的位置可以相反,也可以在不同的角落或任何地方!
目前红点根本不这样做..
谢谢你的帮助。
- 你为什么使用ATAN2?更改为 Math.atan() - 您将在 var A
中获得角度
- 你要把你的红点放在哪里?在 HUD 里面?
更正代码
https://jsfiddle.net/ka9xr07j/embedded/result/
var obj = FindNewPointPosition(400,4200,400,4200); - new position 417. 425
终于找到了不用角度的解决方法
function newpointposition(origin, destination)
{
// radius distance between cross and red dot
var r=30;
// calculate a vector
var xDistance = destination.x - origin.x;
var yDistance = destination.y - origin.y;
// normalize vector
var length = Math.sqrt(xDistance * xDistance + yDistance * yDistance);
xDistance /= length;
yDistance /= length;
// add the radius
xDistance = xDistance * r;
yDistance = yDistance * r;
var newpoint = { x: 0, y: 0 };
newpoint.x = origin.x + xDistance;
newpoint.y = origin.y + yDistance;
return newpoint;
}
var radar = newpointposition({
x: 500,
y: 800
}, {
x: 3600,
y: 2850
});
alert(radar.x + ' ' + radar.y);
ty Trike,使用 jsfiddle 对我很有帮助。
我在尝试制作的 javascript 游戏中遇到了三角函数问题。 以原点 (xa,ya) 为半径和终点 (ya,yb) 我需要找到新点的位置。
//calculate a angle in degree
function angle(xa, ya, xb, yb)
{
var a= Math.atan2(yb - ya, xb - xa);
a*= 180 / Math.PI;
return a;
}
function FindNewPointPosition()
{
//radius origine(xa,xb) destination(ya,yb)
var radius=30;
var a = angle(xa, xb, ya, yb);
newpoint.x = xa + radius * Math.cos(a);
newpoint.y = ya + radius * Math.sin(a);
return newpoint;
}
想象一张图片,因为我没有足够的声誉来 post 一张图片: 蓝色方块是地图(5000x5000),黑色方块(500x500)是玩家看到的(hud)。 Cross(400,400) 是起点,sun(4200,4200) 是终点。 红点 (?,?) 指示玩家朝哪个方向寻找太阳.. 但是太阳和十字架的位置可以相反,也可以在不同的角落或任何地方!
目前红点根本不这样做..
谢谢你的帮助。
- 你为什么使用ATAN2?更改为 Math.atan() - 您将在 var A 中获得角度
- 你要把你的红点放在哪里?在 HUD 里面?
更正代码 https://jsfiddle.net/ka9xr07j/embedded/result/
var obj = FindNewPointPosition(400,4200,400,4200); - new position 417. 425
终于找到了不用角度的解决方法
function newpointposition(origin, destination)
{
// radius distance between cross and red dot
var r=30;
// calculate a vector
var xDistance = destination.x - origin.x;
var yDistance = destination.y - origin.y;
// normalize vector
var length = Math.sqrt(xDistance * xDistance + yDistance * yDistance);
xDistance /= length;
yDistance /= length;
// add the radius
xDistance = xDistance * r;
yDistance = yDistance * r;
var newpoint = { x: 0, y: 0 };
newpoint.x = origin.x + xDistance;
newpoint.y = origin.y + yDistance;
return newpoint;
}
var radar = newpointposition({
x: 500,
y: 800
}, {
x: 3600,
y: 2850
});
alert(radar.x + ' ' + radar.y);
ty Trike,使用 jsfiddle 对我很有帮助。