1. 向量基础 分享至QQ空间

发布时间: 2017-01-11 09:23:39.0 点击: 250

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

1484097787627030133.jpg

平面坐标系下,向量和点的定义一样,都有两个分量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
*/




|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.