這兩天繼續著手開發碰撞部分。
主要工作是寫碰撞類和運動線程類。碰撞主要在于算法,運動線程只要管理好就行了。
之前碰撞測試中(即還未添加完整碰撞算法時)遇到各種bug,疑似機器人和小球的定位點不明所造成的。昨天研究了下QT下的GUI的定位點,發現應該為圖形的左上角。這與我的Java圖形編程中遇到的情況一致,不知道是否是各類圖形編程的共性。
定位點明確后,碰撞依然不符合預期。發現一處坐標系正方向弄錯而產生的錯誤。修改后,運動改變,但是依然有問題:球在接觸機器人前即回彈。查找問題許久,未發現進一步代碼上的問題。于是仔細閱讀了框架代碼,發現本應是球的直徑的一個參數被命名為了radius。導致我一直用球的直徑當做半徑在用。把命名修改并修改代碼后,碰撞實現預期。Bug終于De了出來,歷時許久,但是倍感輕松。
下一步就是碰撞算法了。其實具體代碼已經寫出來了,但是不符合預期。原始框架中步距為int類型,導致速度值也只能設置為int類型。為了不損失過多的精度,只能設置一個較大的速度作為步距。結果導致碰撞時兩物體會有一定的交集。考慮到是這里產生了bug。Debugging。準備今明兩天內搞完。