Vector 沿平面的比例矢量

Vector 沿平面的比例矢量,vector,scale,plane,Vector,Scale,Plane,我试图将摩擦力应用于3D碰撞。我所掌握的资料如下: 碰撞的速度 碰撞器的曲面法线 任意摩擦系数(包括0-1) 我想做的是将平行于平面的速度部分乘以摩擦系数,同时保持平行于法线的部分不变 我怎样才能开始执行此操作 我想这可能会涉及到点积的使用,但后来我开始阅读矩阵,然后是向量投影,现在我很迷茫。我通过以下方法解决了这个问题: 获取法线的切线向量 使用法线和切线向量获取曲面的旋转矩阵 使用旋转矩阵的逆矩阵变换速度向量 通过摩擦系数缩放变换向量的x和z分量 使用旋转矩阵再次变换速度 我怀疑这是最

我试图将摩擦力应用于3D碰撞。我所掌握的资料如下:

  • 碰撞的速度
  • 碰撞器的曲面法线
  • 任意摩擦系数(包括0-1)

我想做的是将平行于平面的速度部分乘以摩擦系数,同时保持平行于法线的部分不变

我怎样才能开始执行此操作


我想这可能会涉及到点积的使用,但后来我开始阅读矩阵,然后是向量投影,现在我很迷茫。

我通过以下方法解决了这个问题:

  • 获取法线的切线向量
  • 使用法线和切线向量获取曲面的旋转矩阵
  • 使用旋转矩阵的逆矩阵变换速度向量
  • 通过摩擦系数缩放变换向量的x和z分量
  • 使用旋转矩阵再次变换速度

  • 我怀疑这是最有效的方法,但似乎已经奏效了。

    如果你能做向量加法、标量乘法(即向量乘以一个数字)和点积,那么这就是你所需要的:

    Vin=(V•VnormalVnormal

    Vpar=V-Vin

    Vpar=kVpar(其中k是系数,“=”表示赋值)

    Vin=-Vin


    V=Vin+Vpar

    感谢您的测试输入。我的数学记数法不好,=>做什么?看起来在Vin计算中没有使用Vpar,或者有两种输出?@Vesuvian:对不起,我忘了最后一步。我会编辑的。谢谢@Beta更新,但我还是有点困惑。第一行是指速度和法线的点积乘以法线吗?维苏威人:不需要道歉,向量代数一开始很混乱,是的,这就是它的意思。两个向量的点积是一个数;(V•Vn)是一个数字。向量是向量的次数;(V•Vn)Vn是一个向量。好的,我有一个实现,但它似乎翻转了一个轴。速度为(0.0,-9.1,-4.9),法线为(0.0,1.0,0.0),摩擦力为1.0,我得到的结果是(0.0,9.2,-4.8)。我认为大小是正确的(只是输出上的一些舍入),但是你可以看到速度在Y轴上反映出来。是的,你已经将3D问题转化为2D对齐问题。顺便说一句,你是否也处理不同的恢复系数,或者你的碰撞仅仅是纯弹性的?我正在写一个粒子模拟。粒子没有质量,所以碰撞是有弹性的(我想!)。