下面是引用 tk7545 於 2010-03-19 16:30 發表的 :
謝謝大大 我只會用一點VB6
我有嘗試要把大大之前的那個專案改成兩個轉軸 但不知該如何下手
如果是這樣
參考點該怎麼設呢?
或許我對VB沒有很熟 所以就...覺得很困難
有規定一定要 VB6 嗎?
很多程式語言其實都差不多,語法不太相同罷了
原理還是像個大鐵塊不變
兩個轉軸就等於兩個以上的參考點
參考點即為某個圖形的,例如說,橢圓的原點、圓形的原點、拋物線的原點、不規則形的原點
既然兩個以上,就考慮看看要不要用陣列來儲存
之前那個 Pos.txt 檔案可以設定成 Pos[1].txt Pos[2].txt
每個 INDEX都有不同的系統
可以把每個系統當作一個陣列中的元素來處理
例如可以在 Pos[X].txt 開頭寫一些資訊,代表圖形形狀、一些半長軸(a)、半短軸(b)、半焦距(c)、或是每個點的座標 (Position)
因為以上次的專案來說,右邊有三個圓形
圓形是不可以用點來描述的,因此要以圓形的公式來繪圖並計算
圓形是橢圓的特例嘛,(X-h)^2 + (Y-k)^2 = r^2 原點 (h,k) 半徑 r
至於一些特殊的形狀,只要程式有提供,就要加入該圖形的相關公式與函數...
上次的只有設左邊的系統,沒有右邊三個圓形的系統
因此可以再加三個系統,都繞同個系統原點,也就是三個圓外切的圓的圓心
然後半徑設一設
Timer 系統與精準度方面,有兩種辦法
一種是建立 Timer 的群組,就是 Load Timer(Index) 載入很多 Timer 去驅動每個系統
一種是只有一個 Timer,並且使 Timer 精準度極高,以迴圈方式處理不同 INDEX 之所有系統資料:
旋轉、點數值重新設定、重新繪圖、預測系統路徑並檢查是否相切或未來何時會相切
上次跟你討論過 許多3D 遊戲,為何有時使用一些大砲、手榴彈使人炸飛後,如果當速度超過精準度之預測外
就會造成來不及預測,兩個模組以上已經重疊,造成第一人稱視角振動...
由於作用力與反作用力,速度撞到牆壁後卡住後,衝量之數值減少不多,而模組外圍又造成對牆壁作不同方向之反作用力
我猜測應該是使用 Timer 精準度極高的方法,所以造成畫面震動
設計這種東西...如果不用偷吃步,
如果能正確把圖形之數學公式與物理運動性質導出來
你就可以去寫繪圖軟體了!
上次的專案完全沒運用到物理性質
更進一步的話還要考慮相切碰撞、摩擦力與加速度、系統之質量、轉軸力矩...
我建議先把程式的程序與函數、變數、變數名稱 要取好
程式的程序與函數很像 公式
變數很像公式中的元素
這等於是把數學、物理、程式要熟悉運用的課程!連我都覺得有點困難的說~
先把公式還有基礎性質弄清楚再來寫程式吧
記得一定要拿計算紙!這將比想像中的複雜許多...
光上次我就用了差不多 滿滿五張來導一些平常生活中幾乎不會使用到的公式
但對於程式應用卻是無比重要...
祝你設計順利~