向量表示
class cvector;
表示從0到\((x,y)\)的向量。對向量只關心方向和長度,不關心起點和終點
2.
cvector operator +(cvector p,cvector q)
用法:c=a+b
3.
cvector operator -(cvector p, cvector q)
用法:c=a-b
4.
cvector operator *(double k, cvector p)
\(\boldsymbol=f\boldsymbol\),f是double
5.向量的點積
double operator *(cvector p,cvector q)
功能:求同向還是異向;求投影;求投影後用勾股定理求點到直線距離
6.向量模長
double length(cvector p)
7.向量單位化
將向量除以自身的長度來得到同方向的單位向量
cvector unit(cvector p)
8.向量的投影長度
向量與該方向單位向量的點積
注意:負數表示反方向
double project(cvector p,cvector n)
double dot(cvector p,cvector q)
表示向量p在向量n上的投影p'
b在a上的投影的模是\(\dfrac \cdot \boldsymbol}|}\)
所以b在a上的投影即為\(\dfrac \cdot \boldsymbol}|} \dfrac}|}=\boldsymbol\dfrac \cdot \boldsymbol}^2}\)
9.向量的對稱
記b在a上的投影為\(\boldsymbol=\boldsymbol\dfrac \cdot \boldsymbol}^2}\)
則b關於a的對稱為\(\boldsymbol-b}\)
10.向量的叉乘
性質:在二維情況中,\(\boldsymbol\)
功能:求面積;求順時針方向還是逆時針方向;判斷是否在半平面上
double operator ^(cvector p,cvector q)
c=a^b;//a,b,c all is cvector type
\(\boldsymbol\)為有向面積,可正可負,若a逆時針旋轉小於180°可到b,則結果為正,否則結果為負
11.叉積排序
#include #include #include using namespace std;
struct vector
vector()
double operator ^ (const vector & v) const
};#define point vector
vector operator - (const point & p1, const point & p2)
bool operator < (const point & p1, const point & p2)
point ps[60];
int main()
12.向量圍成的三角形面積
叉積的一半
double area(cvector p, cvector q)
13.求多邊形的面積
基本思路是進行三角剖分。
指定逆時針方向,列舉\(\vec\),累加\(\dfrac\times\vec}\)
14.點、線的表示
#define cpoint cvector
class cpoint
class cline
15.常用函式與常數
double pi = acos(-1);
double inf = 1e20;
double eps = 1e-6; //精度不是越高
bool iszero(double x)
bool flarger(double a, double b)
bool fless(double a, double b)
16.點與向量
cvector operator -(cpoint b, cpoint a)
// c = a – b;
cpoint operator +(cpoint a, cvector p) // p = p + v; p是點,v是向量
17.點與點距離
利用兩點之間模長
double dist(cpoint p, cpoint q) //從a點指向b點的向量ab可用來
點與線距離
利用叉積求面積,然後除以底邊即為高
double dist(cpoint p, cline l)
19.點繞點旋轉(二維)
旋轉向量ab到ac注:
在xy平面上逆時針旋轉α角(弧度制)
cpoint rotate(cpoint b, cpoint a,double alpha)
20.點在直線左側還右側
直線用兩個點a,b表示,是有方向的,假設方向是a->b
int sideofline(point p, point a, point b)
21.過點作線的垂線(二維)
cline vertical(cpoint p, cline l)
22.點到線的垂足
利用點積求投影,進而求出垂足
應用:求對稱點
注:在平面上也可作垂線,利用線與線交點(後面會提到)
cpoint foot(cpoint p, cline l)
23.線與線夾角
利用投影(也可以利用叉積或餘弦定理)
應用:兩直線的位置關係,射線夾角(注意方向即可)
double angle(cline l, cline m)
day33 稀疏陣列
當乙個陣列中大部分元素為0,或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。稀疏陣列的處理方法是 1 記錄陣列一共有 幾行幾列,有多少個不同的值 2 把具有不同值的元素的行列及值記錄在乙個小規模的陣列中,從而縮小程式的規模 1.遍歷原始的二維陣列,得到有效資料的個數sum 2.根據sum就可以...
day33 Pyhton logging 模組和包
一內容回顧 try except try except else try finally try except try except finally try except else finally 報錯的時候 1檢查程式邏輯是不是有問題 2.邏輯沒有問題,但是就是會報錯 找到具體錯誤的那一行 在這一...
day 3 9基礎複習
1.不要在模組之間相互呼叫,否則會出現麻繩現象,避免迴圈匯入。用來判斷值是否相等 分別指向兩個空間,但是空間裡面的內容相同 is 判斷指向是否相等。例 a 11,22,33 b 11,22,33 a b true a is b false id a 1398041200093640 id b 139...