在二维平面直角坐标系中,设 a⃗ =(x1,y1),b⃗ =(x2,y2) a → = ( x 1 , y 1 ) , b → = ( x 2 , y 2 ) ,则 a⃗ ⋅b⃗ =|a⃗ ||b⃗ |cosθ a → ⋅ b → = | a → | | b → | cos θ ,其中 θ θ 为这两个向量的夹角。坐标表示为: a⃗ ⋅b⃗ =x1y1+x2y2 a → ⋅ b → = x 1 y 1 + x 2 y 2 。
当然有多维向量也有点积,此时的定义用坐标表示: a⃗ ⋅b⃗ =x1y1+x2y2+⋯+xnyn a → ⋅ b → = x 1 y 1 + x 2 y 2 + ⋯ + x n y n
当 a⃗ ⋅b⃗ =0 a → ⋅ b → = 0 时, a⃗ ⊥b⃗ a → ⊥ b → 。可以判断两条直线是否垂直。
同时,根据定义式,在知道两个以同一点为一个端点的线段长度时可以计算其夹角。
其它的暂时不知道。。。
搞一个struct重载一下就好了。。。
//#include
struct node{
double x,y;
}
double operator * (const node &a,const node &b){
return a.x*b.x+a.y*b.y;
}
double len(node a){//长度
return sqrt(a.x*a.x+a.y*a.y);
}
double _angle(node a,node b){//角度
return acos(a*b/len(a)/len(b));//arccos,弧度制
}
在二维平面直角坐标系中,设 a⃗ =(x1,y1),b⃗ =(x2,y2) a → = ( x 1 , y 1 ) , b → = ( x 2 , y 2 ) ,则 a⃗ ×b⃗ =|a⃗ ||b⃗ |sinθ a → × b → = | a → | | b → | sin θ ,其中 θ θ 为这两个向量的夹角。坐标表示为: a⃗ ⋅b⃗ =x1y2−x2y1 a → ⋅ b → = x 1 y 2 − x 2 y 1 。
而在空间中, a⃗ ×b⃗ a → × b → 的结果为一个向量。设 a⃗ =(x1,y1,z1),b⃗ =(x2,y2,z2) a → = ( x 1 , y 1 , z 1 ) , b → = ( x 2 , y 2 , z 2 ) ,则 a⃗ ×b⃗ =c⃗ , c=(y1z2−y2z1,z1x2−x1z2,x1y2−y1x2) a → × b → = c → , c = ( y 1 z 2 − y 2 z 1 , z 1 x 2 − x 1 z 2 , x 1 y 2 − y 1 x 2 )
在二维平面中,叉积可以用来判断点与直线的位置关系。容易从定义式看出,当 b⃗ b → 在 a⃗ a → 的逆时针(180 ∘ ∘ )方向时, a⃗ ×b⃗ <0 a → × b → < 0 ,反之 >0 > 0 ,在同一直线上时 =0 = 0 。这是一个特别常用的一个性质。
struct node{
double x,y;
}
double operator * (const node &a,const node &b){
//为了避免与点积混淆可以用^
return a.x*b.y-a.y*b.x;
}