二維幾何模板
#include #include #include #include #include #include #include #include #include using namespace std;
/************************** 二維幾何基礎 **************************/
struct point
};typedef point vector;
const double eps = 1e-10;
int dcmp(double x) ///三態函式 處理與double零有關的精度問題
///向量運算
vector operator + (vector a, vector b)
vector operator - (vector a, vector b)
vector operator * (vector a, double p)
vector operator / (vector a, double p)
bool operator < (const point& a, const point& b)
bool operator == (const point& a, const point& b)
double angle(vector v)///計算向量極角
double dis(point a, point b)///兩點距離
double dot(vector a, vector b)///點積
double length(vector a)///用點積計算向量長度
double angle(vector a, vector b)///用點積計算向量夾角
double cross(vector a, vector b)///叉積計算
///用叉積計算三角形有向面積
double area2(point a, point b, point c)
///向量繞起點旋轉rad度(弧度)後的座標
vector rotate(vector a, double rad)
///單位法線(左轉90度後的單位向量)(呼叫需確定a為非零向量)
vector normal(vector a)
///直線p + tv 和直線q + tw的交點(呼叫應保證p,q有交點 : 即 cross(v,w)!=0)
point getlineinersection(point p, point v, point q, point w)
double distancetoline(point p, point a, point b)///點p到直線ab距離
double distancetosegment(point p, point a, point b)///點p到線段ab距離
///線段相交判斷(規範相交每條線段的兩個端點都在另外一條線段兩側)
bool segmentproperintersection(point a1, point a2, point b1, point b2)
double convexpolygonarea(point *p, int n)///多邊形面積(有向面積 = area / 2)
point bcenter(point *pnt, int n)///計算多邊形的重心
s.x = tpx / (6 * area);
s.y = tpy / (6 * area);
return s;
}int main()
計算幾何 二維幾何 模板
幾何意義 向量的點積 a b a b a b cos cos 若cos cos 為正,兩向量之間的夾角為銳角 為負,兩向量夾角為鈍角 為量,兩向量夾角為直角。b在a方向上的投影 向量的叉積 a b a b a b sin sin 數值上表示a和b構成的平行四邊形的面積。include using n...
二維幾何基礎
模板 from 紫書 includeusing namespace std typedef long double ld const ld eps 1e 10 const ld pi acos ld 1.0 struct point typedef point vector vector opera...
二維幾何基礎
在幾何中,向量是乙個炒雞重要的東西,像空氣對於人,水對於魚 qaq 在這裡就不詳細介紹向量了,大家在高中數學中會學到,數學毒瘤,貌似資訊也是哈哈哈 下面是他們的常用定義 struct point 建構函式,方便 編寫 typedef point vector 從程式實現上,vector只是point...