#include #include #include #include #include using namespace std;
struct 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)
bool operator == (const point& a,const 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) //有向面積
//a向量逆時針旋轉α rad
//x'=xcosα-ysinα;
//y'=xsinα+ycosα;
vector rotate(vector a, double rad)
//a的單位法線,也就是逆時針90°,長度變為1,注意a要非零向量
vector normal(vector a)
//利用複數,可以更加簡單的實現
#include typedef complexpoint;
typedef point vector;
bool cmp(const point& a, const point& b)
double dot(vector a, vector b)
double cross(vector a, vector b)
vector rotate(vector a, double rad)
模板一:
#include #include #include #include using namespace std;
const double eps = 1e-10;
struct point
};typedef point vector;
int dcmp(double x)
bool operator == (const point& a,const point& b)
bool operator < (const point& a, const point& b)
vector operator + (vector a, vector b)
vector operator - (vector a, vector b)
vector operator * (vector a, double p)
vector operator / (vector a, double p)
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) //有向面積
vector rotate(vector a, double rad)
vector normal(vector a)
模板二:
// 模板二:
#include #include #include #include #include #include using namespace std;
typedef complexpoint;
typedef point vector;
const double eps = 1e-10;
int dcmp(double x)
bool cmp(const point& a, const point& b)
double dot(vector a, vector b)
double cross(vector a, vector b)
vector rotate(vector a, double rad)
演算法競賽入門經典(劉汝佳) 習題2 4子串行的和
樣例輸入 2 465536 655360 0 0樣例輸出 case 1 0.42361 case 2 0.00001 分析 輸出保留5位小數 輸入包含多組資料 這意味著資料是成批的,是一堆放在一起的,需要自己確定那幾個資料是本次需要的 結束標記 n m 0,表示n和m中任意乙個都不為零 n6本題有陷...
演算法入門經典(劉汝佳)陣列和字串 上機練習
第一題 輸入一些學生的分數,哪個分數出現的次數最多。如有並列,從小到大輸出。思路 先排序,排好序後,相同數字間序號的差值就是分數個數。注意 1.題目沒有明確是不是任意輸入。如果不事先確認輸入分數個數的總數,後面會很不好處理資料。2.flag是用來控制空格的輸入的。保證第乙個資料前沒有空格,最後乙個資...
點和向量的數學基礎
計算機圖形學數學基礎譯自 scratchapixel 數學基礎部分共八篇,本篇為第一篇,感興趣的同學可以參考我的 gitbook 映象。向量可以被看作是乙個箭頭從乙個點出發到另外乙個點結束。向量不僅可以看作為從a點到b點的方向,還可以看作a點到b點的距離。下列是計算向量長度的公式 在幾何學中,復縱線...