我有一个用扭矩W旋转的固体物体,我想计算施加在距离物体中心D单位的某个点上的力F. 所有这些值都以Vector3格式表示(x,y,z)
我知道直到现在W = D x F,其中x是叉积,所以通过展开这个我得到:
Wx = Dy*Fz - Dz*Fy
Wy = Dz*Fx - Dx*Fz
Wz = Dx*Fy - Dy*Fx
Run Code Online (Sandbox Code Playgroud)
所以我有这个等式,我需要找到(Fx,Fy,Fz),我正在考虑使用Simplex方法来解决它.由于F向量也可以有负值,我将每个F变量分成2(F = GH),因此新方程如下所示:
Wx = Dy*Gz - Dy*Hz - Dz*Gy + Dz*Hy
Wy = Dz*Gx - Dz*Hx - Dx*Gz + Dx*Hz
Wz = Dx*Gy - Dx*Hy - Dy*Gx + Dy*Hx
Run Code Online (Sandbox Code Playgroud)
接下来,我定义了单纯形表(我们需要<=不等式,所以我复制每个方程并将其乘以-1.另外,我将目标函数定义为:最小化(Gx - Hx + Gy - Hy + Gz - Hz).
该表如下所示:
Gx Hx Gy Hy Gz Hz <= RHS
============================================================
0 0 -Dz Dz Dy -Dy <= Wx = Gx
0 0 Dz -Dz -Dy Dy <= -Wx = Hx
Dz -Dz 0 0 Dx -Dx <= Wy = Gy
-Dz Dz 0 0 -Dx Dx <= -Wy = Hy
-Dy Dy Dx -Dx 0 0 <= Wz = Gz
Dy -Dy -Dx Dx 0 0 <= -Wz = Hz
============================================================
1 -1 1 -1 1 -1 0 = Z
Run Code Online (Sandbox Code Playgroud)
问题是,当我通过在线求解器运行它时,我得到无界解决方案.任何人都可以请我指出我做错了什么?
提前致谢.
编辑:我确定我搞砸了某些地方的某些标志(比如Z应该被定义为最大值),但是我确定在定义更重要的东西时我错了.
提出的问题没有独特的解决方案.你只能解决力的切向投影.这来自矢量(交叉)乘积的性质 - 对于共线矢量它是零,特别是对于矢量本身的矢量积.因此,如果F是W = r × F的解,那么F' = F + k r也是任何k的解:
r x F' = r x(F + k r)= r × F + k(r × r)= r × F
由于矢量积的定义,r x r项为零.因此,没有单一的解决方案,而是作为解决方案的矢量的整个线性空间.
如果将解决方案限制为在r方向上具有零投影的力,那么您可以简单地采用W和r的向量积:
w ^ X - [R =([R X ˚F)X - [R = - [ - [R X(- [R X ˚F)] = - [([R.˚F) - [R - (- [R. - [R)˚F ] = | r | 2 楼
因为F对r的投影为零(点表示标量(内部)乘积),因此第一项扩展为零.因此:
F =(W x r)/ | r | 2
如果你还给出了F的大小,即| F |,那么你可以计算径向分量(如果有的话),但仍有两种可能的解决方案,径向分量在相反的方向上.