數學上,三維幾何是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...