Javascript 用角计算心形物

Javascript 用角计算心形物,javascript,math,angle,Javascript,Math,Angle,所以基本上我有起始向量和天使,但我正在使用的代码只更新了我的角度,我试图得到另一个向量 var start_x = 0; var start_y = 0; var speed = 200; var current_x; //This needs to be calculated var current_y; //This needs to be calculated var current_angle = 53; 如何使用速度和起始位置计算当前X矢量和Y矢量?我浏览了这个网站和其他网站,但

所以基本上我有起始向量和天使,但我正在使用的代码只更新了我的角度,我试图得到另一个向量

var start_x = 0;
var start_y = 0;
var speed = 200;
var current_x; //This needs to be calculated 
var current_y; //This needs to be calculated 
var current_angle = 53;
如何使用速度和起始位置计算当前X矢量和Y矢量?我浏览了这个网站和其他网站,但似乎找不到答案。

好的,给你

首先你有速度,所以你也需要一个时间框架,所以让我们假设我们需要1s后的坐标。测量速度的公式为V=S/T 式中,V为速度(方向上的速度),S为距离,T为时间。 因此S=VxT 根据您的速度200,1秒内行驶的距离为200米 现在我们也有了角度,你给它53度。 因此,我们可以画一个虚构的三角形来寻找(x,y)未知的新坐标。 要知道x,y,公式是

y= sin(theta) x Distance
x = cos(theta) x Distance
其中θ等于53度,距离为200 因此(x,y)=()

更具描述性的是,在我们想象的三角形中,y是相反的,x是相邻的,x,y只不过是距离0,0的距离。三角学中有一个公式,它表明

Sin(theta) = opposite/Hypotenuse
 hence 53 = unknown/200
similarly
Cos(theta) = Adjacent/Hypotenuse
 hence 53 = unknown/200
 So after calculating we get the result (120.36,159.72)
所以在java脚本中,您可以使用

// since Math.cos takes input in radians you  have to convert it into degrees.

    var speed = 200;
    var time = 1;
    var angle = 53;
    x = (Math.cos(angle*(Math.PI/100))* (speed*time);
    y = (Math.sin(angle*(Math.PI/100))* (speed*time);
我们使用弧度而不是度数进行计算,因此您可能需要进行必要的度数转换,但这并不困难,只需将(x,y)转换为(y,x),这将是度数的结果。好的

首先你有速度,所以你也需要一个时间框架,所以让我们假设我们需要1s后的坐标。测量速度的公式为V=S/T 式中,V为速度(方向上的速度),S为距离,T为时间。 因此S=VxT 根据您的速度200,1秒内行驶的距离为200米 现在我们也有了角度,你给它53度。 因此,我们可以画一个虚构的三角形来寻找(x,y)未知的新坐标。 要知道x,y,公式是

y= sin(theta) x Distance
x = cos(theta) x Distance
其中θ等于53度,距离为200 因此(x,y)=()

更具描述性的是,在我们想象的三角形中,y是相反的,x是相邻的,x,y只不过是距离0,0的距离。三角学中有一个公式,它表明

Sin(theta) = opposite/Hypotenuse
 hence 53 = unknown/200
similarly
Cos(theta) = Adjacent/Hypotenuse
 hence 53 = unknown/200
 So after calculating we get the result (120.36,159.72)
所以在java脚本中,您可以使用

// since Math.cos takes input in radians you  have to convert it into degrees.

    var speed = 200;
    var time = 1;
    var angle = 53;
    x = (Math.cos(angle*(Math.PI/100))* (speed*time);
    y = (Math.sin(angle*(Math.PI/100))* (speed*time);

我们使用弧度而不是度数进行计算,因此可能需要进行必要的度数转换,但这并不困难,只需将(x,y)转换为(y,x),这将是度数的结果。向量数学很难,因此我将编写一个小类来完成所有繁重的工作:

函数向量(x,y){ this.startx=this.x=x; this.starty=this.y=y; 这个角度=假; 这个.mag=0; this.moveXY=函数(x,y){ 这个.x+=x; 这个.y+=y; this.angle=Math.atan2(this.y-this.starty,this.x-this.startx)*180/Math.PI; this.mag=Math.sqrt(Math.pow(this.y-this.starty,2)+Math.pow(this.x-this.startx,2)); } this.move=功能(速度、角度){ var ang=角度/180*Math.PI; this.moveXY(speed*Math.cos(ang),speed*Math.sin(ang)); } } var o=document.getElementById(“out”); var vec1=新向量(0,0);//起始位置0,0 o、 innerHTML+=“开始x”+vec1.x+”,开始y“+vec1.y+”
”; vec1.移动(200,53);//以53度角移动200个单位 o、 innerHTML+=“move1x”+vec1.x+”,move1y“+vec1.y+”
”; vec1.移动(200,27);//以27度角再移动200个单位 o、 innerHTML+=“move2x”+vec1.x+”,move2y“+vec1.y+”
”; //还可以得到角度和长度 o、 innerHTML+=“最终角度”+vec1.angle+”,幅值“+vec1.mag+”

向量数学很难,因此我将编写一个小类来完成所有繁重的工作:

函数向量(x,y){ this.startx=this.x=x; this.starty=this.y=y; 这个角度=假; 这个.mag=0; this.moveXY=函数(x,y){ 这个.x+=x; 这个.y+=y; this.angle=Math.atan2(this.y-this.starty,this.x-this.startx)*180/Math.PI; this.mag=Math.sqrt(Math.pow(this.y-this.starty,2)+Math.pow(this.x-this.startx,2)); } this.move=功能(速度、角度){ var ang=角度/180*Math.PI; this.moveXY(speed*Math.cos(ang),speed*Math.sin(ang)); } } var o=document.getElementById(“out”); var vec1=新向量(0,0);//起始位置0,0 o、 innerHTML+=“开始x”+vec1.x+”,开始y“+vec1.y+”
”; vec1.移动(200,53);//以53度角移动200个单位 o、 innerHTML+=“move1x”+vec1.x+”,move1y“+vec1.y+”
”; vec1.移动(200,27);//以27度角再移动200个单位 o、 innerHTML+=“move2x”+vec1.x+”,move2y“+vec1.y+”
”; //还可以得到角度和长度 o、 innerHTML+=“最终角度”+vec1.angle+”,幅值“+vec1.mag+”

我以前遇到过这个问题()并使用了以下方法

您将使用
Math.cos()
Math.sin()
方法,它们以弧度为参数。所以

var start_x = 0;
var start_y = 0;
var speed = 200;
var current_x; //This needs to be calculated 
var current_y; //This needs to be calculated 
var current_angle = 53;

// converting degrees to radian
var angleInRad = current_angle * (Math.PI / 180);

var time = 1; // second
var distance = speed * time;

// calculate the x and y values
current_x = Math.cos(angleInRad) * distance;
current_y = Math.sin(angleInRad) * distance;

console.log(current_x, current_y); // 120.36, 159.72

我以前遇到过这个问题()并使用了以下方法

您将使用
Math.cos()
Math.sin()
方法,它们以弧度为参数。所以

var start_x = 0;
var start_y = 0;
var speed = 200;
var current_x; //This needs to be calculated 
var current_y; //This needs to be calculated 
var current_angle = 53;

// converting degrees to radian
var angleInRad = current_angle * (Math.PI / 180);

var time = 1; // second
var distance = speed * time;

// calculate the x and y values
current_x = Math.cos(angleInRad) * distance;
current_y = Math.sin(angleInRad) * distance;

console.log(current_x, current_y); // 120.36, 159.72

这不是一个真正的编程问题,这是一个数学问题。一旦您找到了合适的公式,JavaScript部分就很容易了。你试过了吗?尽管下面的答案给出了解决这个问题的数学方法,但它的实现可能会有所不同。你能更具体地介绍一下你的项目吗?你正在制作画布动画吗?您希望在代码中计算x和y的确切位置?你打算用它做什么?尽管已经给出了很好的答案,但你可能想仔细阅读。如果你能理解它的工作原理,那就更有趣了。是的,我正在尝试制作画布动画。这不是一个真正的编程问题,而是一个数学问题。一旦您找到了合适的公式,JavaScript部分就很容易了。你试过了吗?即使