作者NDark (溺於黑暗)
看板GameDesign
标题Re: [请益] 数学好难 (二维弹性碰撞)
时间Thu Aug 5 21:07:33 2010
※ 引述《F23ko (纯洁)》之铭言:
: 就是高中物理常算的题目
: 可是要写成程式....
: 觉得好难 orz....
: 二为弹性碰撞的解法很简单
: 就只要把两物体的速度,对中心点连线以及垂直方向做投影
: 然後把中心点连线上的投影互相交换,就是答案了
: 我在高中就这样算,也没觉得特别难或是复杂.....
: 但是要写成程式码就觉得很困难.....
这是因为你是用解题的想法来写程式.
这碰撞问题我会这样解.
已知每个画格(frame)两物件的位置与速度.
两物体碰撞之时.(碰撞很简单就每个画格检查两物体距离)
两物体连线即为你要的投影向量(垂直就是碰撞面).
然後再依照速度与碰撞面.各算出反弹的速度.完毕.
一个物理基底类别(群)在引擎中是必要的.
光一个Vec3就可以玩到十几二十个member function
更不用说Line , Plane , Box.
说实话很有趣.而且算离散几何有很多撇步.
但是我已经不建议各位再打造自己的物理基底
(我比较喜欢叫这是 Geometry Primitive )
有兴趣就直接参考OGRE的Vector3
http://www.ogre3d.org/docs/api/html/classOgre_1_1Vector3.html
算是很好用的一个类别了.
延伸思考
. 想一下 Point Vector Line Ray Segment 有什麽不一样?
. 承上题互相之间怎麽算碰撞?
--
"May the Balance be with U"(愿平衡与你同在)
视窗介面游戏设计教学,讨论,分享。欢迎来信。
视窗程式设计(Windows CLR Form)游戏架构设计(Game Application Framework)
游戏工具设计(Game App. Tool Design )
电脑图学架构及研究(Computer Graphics)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.136.93