附上乙個講極角排序還不錯的部落格
structpoint
point (
double _x, double
_y) : x(_x), y(_y) {}
point
operator + (const point &a) const
//叉積=0是指兩向量平行(重合)
point operator - (const point &a) const
double
operator ^ (const point &a) const //
叉積 double
operator * (const point &a) const //
點積
//定義給map set 之類用的.. 不要用極角 可能會出錯
bool
operator
< (const point &a) const
};typedef point vector;
double getlenght(vector a) //
獲取長度
double getlenght(point a, point b)
double getangle(vector a, vector b) //
獲取夾角[-pi/2, pi/2]
double getarea(vector a, vector b) //
四邊形面積, 有正負
//ab --> ac a到b: b-a
double getarea(point a, point b, point c) //
四邊形面積, 有正負
double getcross(point st, point ed1, point ed2)
//叉積極角排序
//直接把原點當作 極點 進行 極角排序.
bool cmp_j_j(const point &a, const point &b)
//叉積極角排序.
//以qcmppt為起點 做極角排序.
point qcmppt;
bool cmp_j_j_j(const point &a, const point &b)
//atan2 極角排序
//atan2 賽高 聽說速度快些 但是精度比叉積差些 聽說,.,, 未實踐
bool cmp_o_o(const point &a, const point &b)
//獲取象限
//如果在座標軸上 看情況劃分
int getelephant(const point &a)
//先按照象限排序 再極角排序
bool cmp_o_o_o(const point &a, const point &b)
//水平排序
bool cmp_s_p(const point &a, const point &b)
struct point point (double _x, double _y) : x(_x), y(_y) {} point operator + (const point &a) const // 叉積=0是指兩向量平行(重合) point operator - (const point &a) const double operator ^ (const point &a) const // 叉積 double operator * (const point &a) const // 點積 // 定義給map set 之類用的.. 不要用極角 可能會出錯 bool operator < (const point &a) const };
typedef point vector;
double getlenght(vector a) // 獲取長度 double getlenght(point a, point b)
double getangle(vector a, vector b) // 獲取夾角[-pi/2, pi/2]
double getarea(vector a, vector b) // 四邊形面積, 有正負
// ab --> ac a到b: b-a double getarea(point a, point b, point c) // 四邊形面積, 有正負
double getcross(point st, point ed1, point ed2)
// 叉積極角排序 // 直接把原點當作 極點 進行 極角排序. bool cmp_j_j(const point &a, const point &b)
// 叉積極角排序. // 以qcmppt為起點 做極角排序. point qcmppt; bool cmp_j_j_j(const point &a, const point &b)
// atan2 極角排序// atan2 賽高 聽說速度快些 但是精度比叉積差些 聽說,.,, 未實踐 bool cmp_o_o(const point &a, const point &b)
// 獲取象限 // 如果在座標軸上 看情況劃分 int getelephant(const point &a)
// 先按照象限排序 再極角排序bool cmp_o_o_o(const point &a, const point &b)
bool cmp_s_p(const point &a, const point &b)
計算幾何基礎 向量和叉積
size small b 向量 b size 如果一條線段的端點是有次序之分的話,那麼這種線段就稱為 有向線段,如果有向線段p1p2的起點p1在座標的原點,則可以把它稱為向量 p2 size small b 向量的加減 b size 設二維向量 p x1,y1 q x2,y2 則 p q x1 x2...
計算幾何 幾何基礎
這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...
計算幾何之向量旋轉
實際做題中我們可能會遇到很多有關及計算幾何的問題,其中有一類問題就是向量的旋轉問題,下面我們來具體 一下有關旋轉的問題。首先我們先把問題簡化一下,我們先研究乙個點繞另乙個點旋轉一定角度的問題。已知a點座標 x1,y1 b 點座標 x2,y2 我們需要求得 a點繞著 b點旋轉 度後的位置。a點繞b點旋...