叉乘在游戏中应用

利用叉乘判断旋转方向从而比较快的旋转到目标朝向。在一个平面上的两个向量进行叉乘可以得到平面的法向量,但同时这个法向量是有方向的。在左手坐标系中利用“左手定则”,左手四指由a(a表示为叉乘时的第一个参数)朝向b并且运运动最少(不超过180°),拇指指向的方向就是叉乘计算出来的法线方向。反利用这一点,通过判断计算出法线的方向,我们就可以知道顺时针旋转还是逆时针旋转路程比较短。(右手坐标系同理,使用右手定则,得到的结果是一样的)

如果说,平面是xy面,那么法线的z的正负就是法线的方向了。当z<0时,证明左手拇指向屏幕外面指,那么四指朝向为顺时针。当z>0时,相反的,逆时针旋转。

例子,赛车的方向盘就可以使用这种方式进行旋转,往转向小的地方去,因为你的操作是按住方向盘,然后转圈,转圈的时候不停的提取历史方向和当前方向(方向盘中心点到新触摸点),计算叉乘,根据法线方向,然后进行相应的旋转。

image.png

右手坐标系相应的使用右手,变换的其实就是z轴和结果方向调换了,只是显示上的改变,数值上z还是小于0


首页 我的博客
粤ICP备17103704号