二维几何-点和直线

这篇文章讲的是二维几何中点和直线的相关问题。

直线的参数表示。直线可以用直线上的一点P0和方向向量v表示(虽然这个向量的大小没什么用处)。直线上所有点P满足P=P0+tv。其中t称为参数。如果已知直线上的两个不同点A和B,则方向向量为B-A,所以参数方程为A+(B-A)t。

参数方程最方便的地方在于直线、射线和线段的方程形式是一样的。区别仅仅在于参数。直线的t没有范围限制。射线的t>0,线段的t在0~1之间,这样,很多对于直线适用的公式可以很方便的用在射线和线段上。

有向直线的存储结构定义:

//有向直线。它的左边就是对应的半平面
struct Line
{
    Point p;                        //直线上任意一点
    Vector v;                      // 方向向量,左边就是对应的半平面
    double ang;                     //极角

    Line(){}
    Line(Point P, Vector v):p(p), v(v){ang = angle(v);}
    //根据参数,求直线上的点
    Point point(double t)
    {
        return p + v*t;
    }
    //直线的移动 方向是向量的左方向,即上方
    Line move(double d)
    {
        return Line(p + Normal(v)*d, v);
    }

    bool operator < (const Line &L) const   //排序用的比较运算符
    {
        return ang < L.ang;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值