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部分就很容易了。你试过了吗?即使