三維幾何-基礎、直線
阿新 • • 發佈:2018-12-17
數學上,三維幾何是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 { double x, y, z; Point3(double x = 0, double y = 0, double z = 0):x(x), y(y), z(z){} }; typedef Point3 Vector3;
向量操作:
Vector3 operator + (const Vector3 &A,const Vector3 &B)
{
return Vector3(A.x+B.x, A.y+B.y, A.z+B.z);
}
Vector3 operator - (const Vector3 &A,const Vector3 &B)
{
return Vector3(A.x-B.x, A.y-B.y, A.z-B.z);
}
Vector3 operator * (const Vector3 &A, double p) { return Vector3(A.x*p, A.y*p, A.z*p); }
Vector3 operator / (const Vector3 &A, double p)
{
return Vector3(A.x/p, A.y/p, A.z/p);
}
bool operator == (const Vector3 &A,const Vector3 &B)
{
return (dcmp(A.x - B.x) == 0) && (dcmp(A.y - B.y) == 0) && (dcmp(A.z - B.z) == 0);
}
直線的表示。
直線仍然可以用引數方程(點和向量)來表示,並且射線和線段仍然可以看成引數有取值範圍限制的直線,並且點到直線的投影和二維情形一樣。