计算几何入门_点/向量类

这是一个平面上点或向量类, 包含了常用的向量运算如: 数乘, 点乘.

三维或更高维的类可由此拓展出来.

/*
计算几何入门
设计一个点(向量)类, 包含各种属性和操作
 */
#include <iostream>
#include <cmath>
using namespace std;

class Point;
typedef Point Vector;

class Point 
{
public:
    double x, y;
    Point(int x = 0.0, int y = 0.0):x(x),y(y){}  //构造函数
    double norm() {  //返回向量的模的平方
        return x*x + y*y;
    }
    double abs() {
        return sqrt(norm());  //返回向量的模
    }

    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 k) {  //*
        return Point(k*x, k*y);
    }
    Point operator / (double k) {  //除
        return Point(x/k, y/k);
    }

    Point operator * (Point const p) {
        return Point(x*p.x, y*p.y);
    }
    Point dot(Point const v) {
        return Point(x*v.x, y*v.y);
    }
    /*Point cross(Point &v) {
        Point ()
    }*/
    friend ostream & operator << (ostream & out, Point const p);
};

ostream & operator << (ostream & out, Point const p)
{
    out << "x = " << p.x << ' ' << "y = " << p.y;
    return out;
}

int main()
{
    Point p1(1,2);
    Point p2(3,4);
    cout << "p1的模平方: " << p1.norm() << endl;
    cout << "p1的模: " << p1.abs() << endl;
    Point p3 = p1 + p2;
    cout << "p3: x = " << p3.x << " y = " << p3.y << endl;
    p2 = p2*5;
    cout << "现在5*p2: x = " << p2.x << " y = " << p2.y << endl;
    cout << "p3: " << p3 << endl;
    cout << "计算p1,p2的点积:\n";
    cout << p1.dot(p2) << endl;
    cout << p1*p2 << endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值