三維幾何 基礎

2021-08-29 22:37:33 字數 1406 閱讀 5647

數學上,三維幾何是3維歐式空間幾何的傳統名稱。因為實際上這大致就是我們生活的空間。

我們在前面介紹過向量運算,其中很多內容也適合三維幾何,如點+向量=點,向量+向量=向量,點+點沒有定義。

首先是輔助巨集的定義:

const double eps = 1e-10;

const double pi = acos(-1); // π

const double two_pi = 2*pi;

const int maxn = 100 + 5;

const int inf = 10000;

三維點的定義:

struct point3

};typedef point3 vector3;

向量操作:

vector3 operator + (const vector3 &a,const vector3 &b)

vector3 operator - (const vector3 &a,const vector3 &b)

vector3 operator * (const vector3 &a, double p)

vector3 operator / (const vector3 &a, double p)

bool operator == (const vector3 &a,const vector3 &b)

三維點積的定義和二維非常類似,而且也能用點積計算向量的長度和夾角。

double dot(const vector3 &a,const vector3 &b)

向量的長度

double length(const vector3 &a)

向量的夾角

double angle(const vector3 &a,const vector3 &b)

三維叉積:

三維空間裡也有叉積的概念,但形式和二維叉積大不一樣,它是乙個向量,而不再是乙個帶符號的數。

v1 * v2 =

y1z2 - y2z1

z1x2 - z2x1

x1y2 - x2y1

一種在學術上不太嚴謹的說法,可以認為叉積同時垂直於v1和v2,方向遵循右手定則。當且僅當v1和v2平行時,叉積是0。

vector3 cross(const vector3 &a,const vector3 &b)

三維幾何 平面

平面的表示。通常用點法式 p0,n 來描述乙個平面。其中點p0是平面的乙個點,向量n是平面的法向量。每個平面把空間分成了兩個部分,我們可以用點法式表示其中乙個半空間。具體是哪乙個呢?是這個法向量所背離的那乙個 即法向量指向遠離半空間的方向 既然是法向量,n就垂直於平面上的所有直線。換句話說,平面上的...

三維幾何基礎(3D?)

二維幾何我們多少有了一點了解,今天又是周天,於是又開始知識普及了。二維幾何中的很多操作也都適合三維幾何,比如點 向量 點,向量 向量 向量,等等 struct node node operator const node a,const node b node operator const node ...

三維計算幾何模版

網上找了乙個三維計算幾何模版,完善了一下,使它能使用了.include include include using namespace std 基礎 const double eps 0.000001 typedef struct point 3d bool operator const point...