向量就是有大小和方向的量,如速度、位移等都是向量,满足平行四边形法则:

平面坐标系下,向量和点的定义一样,都有两个分量x,y,表示起点和终点之间的位移分量。向量和点的几何意义不同,点和向量之间的关系为:
点-点=向量、向量+向量=向量、点+向量=点。
点+点则无意义。
点和向量的结构体定义如下:
struct Point
{
double x, y;
Point(double x=0, double y=0)//C++的构造函数实现
:x(x), y(y)//初始化列表,为成员初始化
{
}
};
typedef Point Vector;//Vector只是别名
向量的基本操作可以采用C++的运算符重载函数实现:
(1) 向量+向量=向量、点+向量=点:
Vector operator +(Vector a, Vector b)
{
return Vector(a.x+b.x, a.y+b.y);
}
(2) 点-点=向量:
Vector operator -(Point a, Point b)
{
return Vector(a.x-b.x, a.y-b.y);
}
(3) 向量*数=向量:
Vector operator * (Vector a, double m)
{
return Vector(m*a.x, m*a.y);
}
(4) 向量/数=向量:
Vector operator / (Vector a, double m)
{
return Vector(a.x/m, a.y/m);
}
对上述几个函数进行测试如下:
int main()
{
Vector v1(1, 2), v2(3, 4); //构造函数测试
Vector v3 = v1+v2;
printf("%.2f %.2f\n", v3.x, v3.y);
v3 = v1-v2;
printf("%.2f %.2f\n", v3.x, v3.y);
v3 = v1*3;
printf("%.2f %.2f\n", v3.x, v3.y);
v3 = v1/3;
printf("%.2f %.2f\n", v3.x, v3.y);
return 0;
}
/*结果如下:
4.00 6.00
-2.00 -2.00
3.00 6.00
0.33 0.67
*/