二位計算幾何基礎

2021-06-18 05:03:24 字數 1579 閱讀 5622

#include#include#include#includeusing namespace std;

struct point

point(){}

};//點類和建構函式,方便編寫**

typedef point vector;

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)

//方便座標比較大小,

const double eps = 1e-10;

int dcmp(double x)

//精度比較,當不等於精度的時候,返回x是正還是負

bool operator== (const point & a, const point & b)

//精度比較大小,含精度epsdouble

dot(vector a,vector b)

//點的點乘

double length(vector a)

//向量的模長

double angle(vector a ,vector b)

//兩向量的夾角,兩向量的點積 = 兩向量的模長 * 向量的夾角的余弦,返回的弧度

vector rotate(vector a, double rad)

//向量的旋轉,向量繞著起點旋轉,旋轉後的座標公式 x =a.x*cos(rad)-a.y*sin(rad) , y =a.x*sin(rad)+a.y*cos(rad),rad都為弧度

double cross(vector a,vector b)

//向量的叉乘,意義組成平行四邊形的面積,可判斷點的順逆時針

double area2(point a,point b,point c)

//a,b,c組成面積的二倍

vector normal(vector a)

//向量的單位法向量,左轉90度,長度歸一化,單位向量即該向量除以自己的模長

double distancetoline(point p,point a,point b)

//點到直線的距離,面積/低

double distancetosegment(point p,point a,point b)

//點到線段的距離,如果不在延長線上,在是點到直線的距離,如果點在ab延長線,那麼距離為點到b的距離,反之,點到a的距離

point getlineintersection(point p,vector v,point q,vector w)

//兩直線相交求交點

計算幾何 幾何基礎

這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...

二位字首和模板

輸入乙個 n 行 m 列的整數矩陣,再輸入 q 個詢問,每個詢問包含四個整數 x1,y1,x2,y2,表示乙個子矩陣的左上角座標和右下角座標。對於每個詢問輸出子矩陣中所有數的和。輸入格式 第一行包含三個整數 n,m,q。接下來 n 行,每行包含 m 個整數,表示整數矩陣。接下來 q 行,每行包含四個...

js保留二位小數

js保留小數常用有三種方法,可根據實際情況選擇 方法一 使用tofixed保留兩位小數 自帶四捨五入與補位 var num1 55.3715 console.log num1.tofixed 2 結果55.37 方法二 用math.round四捨五入 var num1 parsefloat 55.7...