引言
先说自己,本人之前是做美术的,应为爱好游戏开发后来就毅然决然的选择了编程这条路,也是15年才入的编程这个坑,如果有错误的地方希望大神们帮忙指出,以免我自己错的越来越远。
最近研究随机地闹算法,其中有用到矩形的叠加判断和距离获取等,虽然现在基本的矩形类都有带这一块的功能,本人抱着学其原理的心态打算自己研究并做一套比较高效的算法,如果相关的文章网上已经有了那就是大家的缘分了。
坐标象限法判断矩形之间最短的距离
大家应该都知道坐标系分为四个象限(Quadrant)
其实这是一种很简单矩形距离算法,大概分为以下几个步骤:
1. 以其中一个矩形的的左下点为原点做一个2维坐标系,判断另外一个矩形的左下点在这个坐标系的哪个象限(其他点也可以,但是被比较的也得是相同的点);
2. 根据所在不同的象限分别在矩形上取不同的一个点作为比较;
3. 对取到的两个点做向量的减法运算;
4. 通过判断的相减后的向量来的到两个矩形的距离;
代码如下:
// 取两个矩形的距离 如果相交返回-1 否则返回两矩形距离
int Distance(Rect rect1