點積與叉積

2021-06-21 17:14:21 字數 2089 閱讀 8638

/*            點積和叉積

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,...