Chapter 4 《Data Types and Conventions》
4.1 The basic data types
ODE可以編譯成單倍或雙倍精確浮點數的版本。單精準版本比較快且較省記憶體,但是模擬時會產生較多的誤差;也就是得到較不準確的結果。
[必須先說明哪些因素會影響準確度和穩定性]
浮點數的資料形態為dReal。其他常用的像是dVector3, dVector4, dMatrix3, dMatrix4, dQuaternion。
4.2 Objects and IDs
在ODE裡面有下列幾個不同的物件可以產生:
• dWorld – 動力世界。
• dSpace – 碰撞空間。
• dBody – 剛體。
• dGeom – 用來碰撞的幾何體。
• dJoint – 關節。
• dJointGroup – 關節群組。
相關處理這些物件的方法,都需要傳遞或回傳物件的ID。這些物件ID類別會是dWorldID、dBodyID等等。
4.3 Argument conventions
所有的三軸向量(x,y,z)都有『set』的方法,給予X、Y、Z個別的參數。
所有的三軸向量也都可透過get()方法取得向量的dReal陣列指標。
更多軸的向量也都支援且,可以回傳向量的dReal陣列指標。
所有的座標都是相對於世界座標,除了特殊定義的。
4.4 C versus C++
ODE庫是用C++撰寫,但它的公開介面(Public interface)都是由C的方法構成,並非類別(class)。
為什麼呢?
• 使用C的介面只因為簡潔(簡單?) – 使用C++的介面並沒有對ODE有很大的助益。
• 避免C++在各種編譯器之中不同的mangle(打亂function名稱的動作),以及run-time時的一些問題。
• 使用者不需要熟稔(詭異的?)C++也可使用ODE。
4.5 Debugging
ODE庫可以編譯成『debugging』或『release』模式。除錯模式會比較慢,但是方法會檢查參數和run-time的檢測。釋出版本則會比較快,但會跳過檢查的步驟。