計算幾何基礎 點 向量

2022-06-02 05:06:13 字數 2751 閱讀 2742

附上乙個講極角排序還不錯的部落格

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)

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點旋...