矢量角速度 - 2D

计算科学 软件
2021-12-07 20:16:39

这原本是编程中的一个问题,但由于 Stackoverflow 上几乎没有人知道如何解决这个问题,所以我改为来到这里;https://stackoverflow.com/questions/23003612/javascript-angular-velocity-by-vector-2d

我想将 X 和 Y 速度转换为角速度,这是我目前用来通过 x 和 y 值计算初始速度然后将其转换为我的圆形对象的角速度的公式:

Av = Sqrt(Vx^2 + Vy^2) / R

角速度 = (速度 x^2 + 速度 y^2) 的平方根 / 圆的半径

这是它在我的编程中模拟的方式:http: //jsfiddle.net/yzb9P/2/(单击以更改球的位置)

现在,由于平方根不能为负,所以当球应该逆时针旋转时,这将不起作用。所以,我需要一个初始速度的签名版本,它也可以是负数,我该如何计算呢?

听说 Wedge 产品可以解决这个问题,我也读过很多关于它的文章,但我仍然不明白如何使用它,请帮助!

1个回答

角速度矢量可以通过位置和速度矢量 的叉积计算:

(1)ω=r×v|r|2
在二维上,这真的是
a×b=det(ab)=axbyaybx

我真的不太了解 Java,但看起来您的代码已经配备了计算叉积 ( wedge: function(v))。但请注意,您的线路

ball.av = ball.v.wedge(ball.v.length())/ball.r

似乎是问题所在。给定 的定义wedge,这前面应该有一个负号r×v=v×r. 我也不清楚如何ball.v.length()ball.r相关..