碰撞检测一般用于游戏设计中,比如现在比较火的游戏“王者荣耀”,我们玩游戏中可以看到英雄一般走到地方防御塔的攻击范围,就会被攻击,但是程序员在下代码的时候,不能看到,只能用一段段代码表示,这是就要用到碰撞检测,还判断两个物体是否相交。
在这里我主要说三种主要的相交的判断,其他的碰撞都是在此条件下演变出来的:
在这里先写一下矩形、圆、直线的类代码:
//矩形类
class rect{
private:
double xl;
double yl;
double xr;
double yr;
public:
rect(double _xl, double _yl, double _xr, double _yr)
:xl(_xl), yl(_yl), xr(_xr), yr(_yr)
{
}
bool collideRL(linear& l);
bool collideRC(Circle& c);
bool collideRR(rect& r, rect& r1);
};
//圆类
class Circle{
private:
double x;
double y;
double r;
public:
Circle(double _x, double _y, double _r)
:x(_x), y(_y), r(_r)
{
}
double getCx(){
return x; }
double getCy(){
return y; }
double getCr(){
return r; }
};
//直线类
class linear{
private:
double k;
double b;
double x1;
double x2;
public:
linear(double _k, double _b, double _x1, double _x2)
:k(_k), b(_b), x1(_x1)