作者F23ko (纯洁)
看板GameDesign
标题[请益] 数学好难 (二维弹性碰撞)
时间Thu Aug 5 19:12:58 2010
http://www.phy.ntnu.edu.tw/demolab/phpBB/viewtopic.php?topic=8319
就是高中物理常算的题目
可是要写成程式....
觉得好难 orz....
二为弹性碰撞的解法很简单
就只要把两物体的速度,对中心点连线以及垂直方向做投影
然後把中心点连线上的投影互相交换,就是答案了
我在高中就这样算,也没觉得特别难或是复杂.....
但是要写成程式码就觉得很困难.....
首先,要取得中心点连线向量
然後,要分别对中心点连线做投影
──什麽!Vector2不提供投影的办法
→
计算投影後的分量,A的速度*Cosθ*中心点连线的单位向量
orz.... 不知道角度....
→
Cosθ = A‧中心点向量/|A|*|中心点向量|
很好..... 算出中心点向量的投影了
现在要算垂直线的投影.....
(/‵Д′)/~ ╧╧ 没直接取得垂直向量的方法.... 自己算
→
向量垂直的话,内积 = 0;
因此:X1*X2 + Y1*Y2 = 0
X1/Y1 = - Y2/X2
垂直向量出来了,等於
new Vector2(1f,-中心点向量.X/中心点向量.Y)
或
new Vector2(-1f,中心点向量.X/中心点向量.Y)
──那一边!?
→
要判断式去判断方向.....
我从开始计算这个东西,算到这边已经花了两个小时
重点是.....还算的很难看.....
於是就全删掉了
总共有四个分量要算
现在第二个还没算完.....
请问像这种有点复杂的计算过程,有地方可以直接找演算法吗?
这种基础的东西,应该都被算过很多遍了吧?
呃.... 接下来似乎还有跟平面的碰撞要算....
--
我... 我一点都不糟糕啦!>///<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.27.109.99
1F:推 sivic228:可以试着把向量一些基本运算 dot, cross, magnitude, 08/05 19:59
2F:→ sivic228:normalize, project 等写成函式,然後在用这些去算碰撞 08/05 20:00
3F:→ sivic228:就会比较简单了,不过执行速度可能会较慢..... 08/05 20:01
4F:推 johnny94:XNA上面有一套很不错的物理引擎 08/05 20:10
6F:→ F23ko:感谢 ^^" 08/05 20:18
7F:推 KanoLoa:最近接了flash做物理教材..也是颇头痛-_- 08/05 20:49
8F:→ F23ko:拍拍..... 08/06 01:30