3D數學基礎 向量

2021-07-03 07:30:15 字數 2076 閱讀 1381

//

// vector3.h

// hello

///*注釋:

--是否需要const修飾就是分析其資料是否需要修改,不需要修改就加const,安全性

--一般有兩個地方需要考慮是否加const:1,成員函式引數處 2,成員函式本身,即類本身資料不允許修改(修飾的是this)

*/#ifndef hello_vector3_h

#define hello_vector3_h

#include

class vector3

vector3(const vector3 &a) : x(a.x), y(a.y), z(a.z) {}

vector3(float nx, float ny, float nz) : x(nx), y(ny), z(nz) {}

//過載 '='

vector3 &operator =(const vector3 &a)

//過載 '=='

bool

operator ==(const vector3 &a) const

//過載 '!='

bool

operator !=(const vector3 &a) const

//置為零向量

void zero()

//過載一元 '-' (即負號)

vector3 operator -() const

//過載二元 '+' '-'(即加,減)

vector3 operator +(const vector3 &a) const

vector3 operator -(const vector3 &a) const

//與標量的乘,除法

vector3 operator *(float a) const

vector3 operator /(float a) const

//過載自反運算子

vector3 operator +=(const vector3 &a)

vector3 operator -=(const vector3 &a)

vector3 operator *=(float a)

vector3 operator /=(float a)

//向量標準化

void normalize()

}//向量點乘

float

operator *(const vector3 &a) const

};///

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

////////

////非成員函式:有些函式寫類外面更易懂

/////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

////////

/*加inline 可以防止函式重定義,因為內聯直接在呼叫處展開,不會編譯成全域性的函式呼叫*/

//求向量的模

inline float vectormag(const vector3 &a)

//計算向量的叉乘

inline vector3 crossproduct(const vector3 &a, const vector3 &b)

//實現標量左乘

inline vector3 operator *(float k, const vector3 &v)

//計算兩點間的距離

inline float distance(const vector3 &a, const vector3 &b)

//提供乙個全域性零向量

extern

const vector3 kzerovector;

#endif

3D數學基礎

vector是向量,向量的意思,向量既有大小,又有方向,verctor3 就是三維向量,乙個三維向量會有三個分量,分別是 x,y,z,在 unity 中每乙個遊戲物件都至少會有乙個元件叫 transform,transform 主要用來控制遊戲物件的位置,旋轉和縮放。vector3.distance...

3D遊戲引擎數學基礎3 向量(下篇)

向量數乘 標量可以與向量相乘,可以直觀聯想到,該運算可以對向量進行縮放。該運算不改變向量的方向,除非標量是負數,這樣向量的方向與原來的方向相反。k u k ux,k uy,k uz 在unity引擎中有對物體進行縮放的功能,其提供在三個座標軸上的縮放,其底層的運算估計就是向量數乘。於是,有需要過載一...

3d數學基礎 常用向量相關運算

作為半路出家的unity程式,必須要補一補3d數學相關的基礎。在遊戲中,運用的比較多的就是三維向量了。三維向量中,比較常見的操作有 1.求兩點距離 這個比較簡單,直接使用目標點各個座標分量相減,然後利用勾股定理求取長度即可。math.sqrt x x y y z z 2.求兩向量夾角 求向量夾角,則...