/* 點積和叉積
1、點積
設點座標a(x1,y1),b(x2,y2),c(x3,y3),d(x4,y4);
向量ab=(x2-x1,y2-y1)=(xab,yab),|ab|=sqrt(xab^2+yab^2);
向量cd=(x4-x3,y4-y3)=(xcd,ycd),|cd|=sqrt(xcd^2+ycd^2);
向量ab與向量cd的點積為:ab●cd=xab*xcd+yab*ycd;
ab●cd=|ab|]cd|cos(a):ab●cd=0 => ab與cd垂直
ab●cd<0 => ab與cd間夾角a成鈍角
ab●cd>0 => ab與cd間夾角a成銳角
點積可以計算向量的夾角和物理上的功w=|f||s|cos(a)=f●s;
2、叉積
向量p1與向量p2的叉積:
p1^p2=|x1 y1|=x1*y1-x2*y2=-p2^p1;
|x2 y2|
若向量p1在向量p2的順時針方向,則叉積p1^p2>0;
若向量p1在向量p2的逆時針方向,則叉積p1^p2<0;
若向量p1與向量p2共線,則叉積p1^p2=0;
設向量p1'=p1-p0,p2'=p2-p0,其中
p1'=(x1',y1')=(x1-x0,y1-y0);
p2'=(x2',y2')=(x2-x0,y2-y0);
p1'^p2'=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)
如果叉積p1'^p2'為正,則相對於p0,p2的極角大於p1的極角;
如果叉積p1'^p2'為負,則相對於p0,p2的極角小於p1的極角;
如果叉積p1'^p2'為零,則相對於p0,p2的極角相等p1的極角(也就是p0p1和p0p2共線);
叉積除了計算幾何向量的方向關係、還計算以向量為相鄰的邊的平行四邊形面積外,一棵用來計算多邊形的面積。
在力學中,可以計算力矩|m|=|r||f|sin(b)=f^r
*/
/*uva 2290 poj 1106
題意:給你半圓可以覆蓋的最多點數
設發射台為p0,由於發射台p0為軸心,可向任何方向旋轉,因此任何點與p0間的直線
都可以作為半圓的下邊界線。若p0pi所在的直線為半圓的下邊界線,則位於半圓區
域的點pj必須同時滿足下述兩個條件:
1、pj在 p0pj 為下界線的半圓一側,即 p0pi p0pj>=0;
2、pj與p0的距離不大於半徑,即|p0pj|<=r;
依次以i為基點,利用叉積統計位於p0pi逆時針方向且長度與p0的距離不大於發射半徑
r點數si;
顯然,半圓可以覆蓋的最多點數s=max。0#include#include#includeusing namespace std;
const double epsi=1e-10;//epsi=0.0000000001
//const double pi=acos(-1);
const int maxn=50005;
struct point
point operator -(const point &op2) const
double operator^(const point &op2) const
};inline int sign(const double &x)
inline double sqr(const double &x)//計算x^2
inline double mul(const point &p0,const point &p1,const point &p2)//叉積
inline double dis2(const point &p0,const point &p1)
inline double dis(const point &p0,const point &p1)//計算|p0p1|
int n;
point p[maxn],cp;
double r;
int main()
printf("%d\n",ans);
} return 0;
}
計算幾何 點積與叉積
a和b為兩個向量,a x1,y1 b x2,y2 a b的幾何意義為a在b上的投影長度乘以b的模長 a b a b cos 其中 為a,b之間的夾角 a b x1 x2 y1 y2 點積的應用 1 判斷兩個向量是否垂直 a b a b 0 2 求兩個向量的夾角,點積 0為鈍角,點積 0為銳角 向量積...
叉積和點積
向量是由n個實數組成的乙個n行1列 n 1 或乙個1行n列 1 n 的有序陣列 向量的點乘,也叫向量的內積 數量積,對兩個向量執行點乘運算,就是對這兩個向量對應位一一相乘之後求和的操作,點乘的結果是乙個標量。對於向量a和向量b a和b的點積公式為 要求一維向量a和向量b的行列數相同。點乘幾何意義 點...
點積運算叉積運算
向量的點積即數量積,叉積又稱向量積或向量積。點積 叉積甚至兩者的混合積在場論中是極其基本的運算。matlab是用函式實現向量點 叉積運算的。1.點積運算 點積運算 a b 的定義是參與運算的兩向量各對應位置上元素相乘後,再將各乘積相加。所以向量點積的結果是一標量而非向量。點積運算函式是 dot a,...