平面几何

最近在做一个2D界面的开发,其中会用到很多几何运算,不胜其烦。痛定思痛,不如自己写几个类吧,希望把关于点、线、矩形的操作包含进去,我用三个类表达他们,分别是CPoint2D、CLine2D、CRect2D。

CPoint2D

表示一个点,有两个数据成员,double x,double y分别表示x和y坐标。

构造函数

用一个点构造另一个点:

CPoint2D(CPoint2D pt);

用坐标x和y构造一个点。

CPoint2D(double x,double y);

析构函数

不需要做什么

~CPoint2D();

关于点的操作

平移

void Offset(double x,double y);

将点视为向量旋转,得到新的点

void Rotate(double angle);

计算一个点到另一个点的距离

double Distance(CPoint2D pt);

CLine2D

CLine2D定义了一条线段,同时也定义了一个向量。数据成员包含:

起点坐标

double x1;

double y1;

终点坐标

double x2;

double y2;

构造函数

用一条线段构造另一条线段

CLine2D(CLine2D line)

从两个点构造一条线段

CLine2D(CPoint2D pt1,CPoint2D pt2);

用两个点的坐标一条构造一条线段

CLine2D(double x1,double y1,double x2,double y2);

关于线的操作

计算线的长度

double GetLength();

将线的起点平移到一个点,默认将起点平移到原点

void Offset(CPoint2D pt={0,0})

void Offset(double x=0,double y=0)

线段与点

计算一个点到本线段的距离

double PointDistance(CPoint2D pt);

计算一个点到本线段的垂线

CLine2D PointVertLine(CPoint pt);

点的位置:返回0在线段上,返回1正向延长线,返回-1反向延长线,返回2左侧,返回-2右侧。

int PointPosition(CPoint2D pt)

线段与线段

计算一条线段在垂直于本线段方向的投影长度

double LineVertDist(CLine2D line)

计算一条线段在平行于本线段方向的投影长度

double LineParaDist(CLine2D line)

取得一条线段在垂直于本线段方向的投影线段

CLine2D LineParaLine(CLine2D line)

取得一条线段在平行于本线段方向的投影线段

CLine2D LinePara(CLine2D line)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值