内积
内积又称:点积、点称、数量积
定义:设向量a(ax,ay),向量b(bx,by)之间的夹角为θ,(0<=θ<=180)
那么a、b的内积a·b=|a|x|b|cosθ=ax * bx+ay * by(横乘横,加上,纵乘纵)
内积中间是点不是x号
我们通过公式可以看出向量内积后得到的是一个数而非向量!
代码实现内积
(后面有完整代码)
//向量内积
double dot(Vector a,Vector b)
{
return a.x*b.x+a.y*b.y;
}
外积
外积又称:向量积、叉乘、叉积
通过上面定义可以看出,向量a与向量b的外积可以定义出一个新的向量c
外积大小:|axb| 外积大小也就是axb的模 |axb|=|a||b|sinθ
通过上面公式可以看出外积大小等于向量a、b所对应平行四边形的面积
如何用向量坐标计算呢?
我们上面得出axb定义出新向量的坐标,这个坐标是三维,然而求|axb|只需要将z=0就可以得出axb=(0,0,x1y2-x2y1) 利用求模公式得出|axb|=x1y2-x2y1(可以为负数)
代码实现外积
//向量外积
double cross(Vector a,Vector b)
{
return abs(a.x*b.y-a.y*b.x);
}
完整代码
#include <bits/stdc++.h>
using namespace std;
class Point
{
public:
double x,y;
Point(double x=0,double y=0):x(x),y(y) {
}
//向量加法
Point operator+(Point p)
{
return Point(x+p.x,y+p.y);
}
//向量减法
Point operator-(Point p)
{
return Point(x-p.x,y+p.y);
}
//向量伸缩
Point operator*(double<