向量在游戏开发中的应用(三)
2017-09-08 09:13
246 查看
在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景。本篇博客将用一个简单的小例子来讲解在实际的游戏开发中如何利用向量的叉乘来解决问题。
向量叉乘的几何意义
叉积的长度 |a×b| 可以解释成以a和b为邻边的平行四边形的面积。
混合积 [a b c] = (a×b)·c可以得到以a,b,c为棱的平行六面体的体积。
[align=left]关于向量叉乘的其他定义、规律以及应用有兴趣的朋友可以参考百度百科,这里就不再啰嗦了。本篇博客不想在叉乘其他地方纠结太多,只说一下如何用叉乘判断方向。[/align]
如何用向量叉乘判断方向
在网上有很多人将向量的应用总结为一句话:点乘判断角度,叉乘判断方向。关于点乘在上一篇文章中已经说完了,所以这里就说说如何用向量叉乘判断方向。
我们都知道在一个平面内的两个非平行向量叉乘的结果是这个平面的法向量,这个法向量是有方向的,而这个方向可以用“右手定则”来判断。具体的判断方法是:
若坐标系是满足右手定则的,当右手的四指从向量a以不超过180度的转角转向向量b时,竖起的大拇指指向是向量n的方向。如下图:
[align=left]在右手坐标系中,当向量a和b作叉乘运算时, 利用“右手定则”可以知道:当法向量n跟某一坐标轴同向时,四指方向为逆时针方向;当法向量n跟该坐标轴反向时,四指方向为顺时针方向。同时“右手定则”要求转角不超过180度的方向,所以用叉乘判断的转向一定是最优转向(所要转动的角度最小,转动的代价也就最小)。在游戏中可利用这点来判断一个角色是顺时针还是逆时针才能更快速的转向一个敌人。[/align]
[align=left]注意:是左手坐标系,所以四指方向跟右手坐标系正好相反。[/align]
向量叉乘案例
接下来的案例将展示如何用向量叉乘判断一个方向盘的转向。老规矩,先上个案例的效果图:
案例源码:
[C#] 纯文本查看 复制代码
?
[align=left]本Demo使用的的开发工具是.0.1f1和VS2013,建议下载源码后用Unity5.0.1f1或者更高的版本打开。源码下载[/align]
[align=left]同系列文章[/align]
「Unity游戏开发」向量在游戏开发中的应用(一)
「Unity游戏开发」向量在游戏开发中的应用(二)
「Unity游戏开发」向量在游戏开发中的应用(三)
我所有的技术分享文章均首发于我的个人博客:https://davidsheh.github.io。如有链接失效或者阅读格式不适,可以访问我的个人博客。
向量叉乘的几何意义
叉积的长度 |a×b| 可以解释成以a和b为邻边的平行四边形的面积。
混合积 [a b c] = (a×b)·c可以得到以a,b,c为棱的平行六面体的体积。
[align=left]关于向量叉乘的其他定义、规律以及应用有兴趣的朋友可以参考百度百科,这里就不再啰嗦了。本篇博客不想在叉乘其他地方纠结太多,只说一下如何用叉乘判断方向。[/align]
如何用向量叉乘判断方向
在网上有很多人将向量的应用总结为一句话:点乘判断角度,叉乘判断方向。关于点乘在上一篇文章中已经说完了,所以这里就说说如何用向量叉乘判断方向。
我们都知道在一个平面内的两个非平行向量叉乘的结果是这个平面的法向量,这个法向量是有方向的,而这个方向可以用“右手定则”来判断。具体的判断方法是:
若坐标系是满足右手定则的,当右手的四指从向量a以不超过180度的转角转向向量b时,竖起的大拇指指向是向量n的方向。如下图:
[align=left]在右手坐标系中,当向量a和b作叉乘运算时, 利用“右手定则”可以知道:当法向量n跟某一坐标轴同向时,四指方向为逆时针方向;当法向量n跟该坐标轴反向时,四指方向为顺时针方向。同时“右手定则”要求转角不超过180度的方向,所以用叉乘判断的转向一定是最优转向(所要转动的角度最小,转动的代价也就最小)。在游戏中可利用这点来判断一个角色是顺时针还是逆时针才能更快速的转向一个敌人。[/align]
[align=left]注意:是左手坐标系,所以四指方向跟右手坐标系正好相反。[/align]
向量叉乘案例
接下来的案例将展示如何用向量叉乘判断一个方向盘的转向。老规矩,先上个案例的效果图:
案例源码:
[C#] 纯文本查看 复制代码
?
[align=left]同系列文章[/align]
「Unity游戏开发」向量在游戏开发中的应用(一)
「Unity游戏开发」向量在游戏开发中的应用(二)
「Unity游戏开发」向量在游戏开发中的应用(三)
我所有的技术分享文章均首发于我的个人博客:https://davidsheh.github.io。如有链接失效或者阅读格式不适,可以访问我的个人博客。
相关文章推荐
- [Unity游戏开发]向量在游戏开发中的应用(二)
- [Unity游戏开发]向量在游戏开发中的应用(一)
- [Unity游戏开发]向量在游戏开发中的应用(三)
- 游戏开发中的数学、向量的应用
- 向量在游戏开发中的应用(一)
- [Unity游戏开发]向量在游戏开发中的应用(三)
- 向量在游戏开发中的应用(二)
- [Unity游戏开发]向量在游戏开发中的应用(一)
- [Unity游戏开发]向量在游戏开发中的应用(二)
- 监听器在游戏开发中的应用----消息回调
- 【COCOS2DX-ANDROID-游戏开发之十二】Android平台第三方应用分享到微信开发
- JavaFX战旗类游戏开发 第五课 定时器的应用
- Windows Phone 7 开发 31 日谈——第22日:应用?还是 游戏?
- GameBuilder开发游戏应用系列之60行代码实现FlappyBird
- GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶
- Windows phone 7 高级编程——使用visual stdio 、silverlight与XNA进行应用和游戏开发
- 自己收集的一些iPhone学习资料(应用软件+游戏开发)[更新]
- 开发最畅销Apple游戏应用的秘诀——App Store创赢艺术
- 遗传算法及神经网络在游戏开发中的应用
- 可视区域应用-android游戏开发