Bullet中的基本資料型別

2022-10-18 09:33:02 字數 1913 閱讀 4824

bullet中的常用資料型別包括: btscalar、btvector3、 btquaternion、btmatrix3x3以及bttransform。

下面我們看看這些基本資料型別功能及用法:

1、btscalar

在bullet中,btscalar是單精度或雙精度浮點數。如果我們定義了巨集bt_use_double_precision,則btscalar是double,否則是float。

btscalar的實現**:

2、btvector3

在bullet中,3d位置和向量用btvector3表示。在btvector3中,實際上包含四個值:x, y, z, w,第四個分量w值恒為0。

加第四個分量,主要是考慮simd對齊(通常simd指令可以處理四個浮點數)。

除了常用的加、減、點積、叉積、混合積、乘乙個標量值,歸一化等操作外,還包括幾個特殊的函式或操作:

比如:angle返回當前向量和另乙個向量的夾角。

繞單位向量旋轉一rotate個角度:

在win32中,btvector3還會使用sse指令加速操作:

比如:3、 btquaternion

這是bullet中四元數類。在3d數學中,四元數可以用來表示物體的方位和旋轉。另外,也可以使用矩陣或尤拉角的方式表示旋轉,它們之間可以相互轉化。

我們知道四元數通過乙個方向軸和乙個旋轉角表示物體的方位。

在bullet中,我們常通過設定旋轉方向和角度的方法來設定四元數,單位化的四元數表示為:

其中,u是旋轉向量,alpha角是旋轉角度。乙個向量v被乙個四元數q旋轉的操作為:

在btquaternion中,通過函式setrotation我們來設定某個方向,一定角度的四元數。

另外,btquaternion也包括了尤拉角和四元數的轉化,我們通過void seteuler(const btscalar& yaw, const btscalar& pitch, const btscalar& roll)來直接設定尤拉角,函式內部會轉化為相應的四元數值。【yaw表示繞y軸旋轉角度,pich繞x軸旋轉角度,roll繞z軸旋轉角度】

另外乙個重要的函式是slerp,它在兩個四元數之間進行平滑插入操作,常用插值動畫中使用該函式。

4、btmatrix3x3

btmatrix3x3是乙個3*3的矩陣,它可以和尤拉角和四元數之間相互轉化。

void setrotation(const btquaternion& q)

void seteulerzyx(btscalar eulerx,btscalar eulery,btscalar eulerz)

void getrotation(btquaternion& q) const

void geteulerzyx(btscalar& yaw, btscalar& pitch, btscalar& roll, unsigned int solution_number = 1) const

當然,也可以求轉置矩陣、伴隨矩陣等等。

另外,diagonalize計算旋轉矩陣r,具體解釋可以看下編寫這個函式的人如何解釋:

5、bttransform

該類同時表示位置和旋轉。主要用於點或向量在不同座標系統之間的轉換。

bullet中使用右手座標系,和opengl是一致的。

在bttransform中,旋轉用m_basis表示,平移通過m_origin表示:

///storage for the rotation

btmatrix3x3 m_basis;

///storage for the translation

btvector3 m_origin;

我們可以對bttransform實施平移、旋轉操作。

bttransform可以返回四元數表示的旋**getrotation

getopenglmatrix返回bttransform表示的opengl矩陣(4*4).

Oracle基本資料型別

資料型別 char n 描述定長字串,n位元組長,如果不指 n 1 to 節定長度,預設為1個位元組長 乙個 漢字為2位元組 可變長的字串,具體定義時指明最大長度n,這種資料型別可以放數字 字母以及ascii碼字符集 或者ebcdic等資料庫系統接受的字符集標準 中的所有符號。n 1 to 節如果資...

C語言基本資料型別整型int用法詳解

c語言基本資料型別 整型 int 用法詳解 1.整型int c 語言提供了很多整數型別 整型 這些整型的區別在於它們的取值範圍的大小,以及是否可以為負。int是整型之一,一般被稱為整型。以後,在不產生歧義的情況下,我們把整數型別和int都稱為整型。int代表有符號整數,也就是說,用int宣告的變數可...

2C語言基本資料型別與常量變數

任課老師 李新宇教學時間 2012.9.3 課時 3課時班級 1001 1101 姓名 學習目標 知識與技能 1 掌握c語言的基本資料型別與表示範圍,區別學習無符號整數和有符號整數,並能正確選擇不同的資料型別表示資料。2 掌握常量和變數的概念。3 區別學習十進位制,八進位制,十六進製制的整型常量 能...