重叠检测----凸边形

很多人都叫他  分离坐标轴方法

理论源自  凸集分离定理

wikipedia 上 Hyperplane separation theorem

他的内容是,如果能找到一条轴,使得两个物体在该轴上的投影互不重叠,那么这两个物体就是不相交的。

重点是如何找到这条轴。

以2D图形的每条边做为分离轴,使2个图形在分离轴的法线上投影,如上图,只要其中有一次 两图形投影不重叠,就可证明两图形不是重叠的。

关于两长方形的重叠检测:

依上理论 为每条边做分离轴,由于长方形为AABB,所以只要检测4条边。

由于最后结果只需要检测投影是否重叠,所以X轴的投影不需要Y值,Y轴的投影不需要X值,做以下图

由上图可见 长方形B的投影检测与A重复了  所以做如下图:

结论:长方形的重叠检测只需要图A的AB两边,蓝边查X,红边查Y。

时间: 2024-08-07 23:34:26

重叠检测----凸边形的相关文章

FZU 2148 Moon Game 判断凸边形

点击打开链接 Problem 2148 Moon Game Accept: 512    Submit: 1419 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Fat brother and Maze are playing a kind of special (hentai) game in the clearly blue sky which we can just consider as a k

矩形重叠检测。

// 矩形重叠类型注释 // CORNER_OVERLAP // -------------------- // | | // | | // | **********|********** // | * | * // | * | * // ---------*---------| * // * * // * * // ********************* // // ANCHOR_OVERLAP // ---- // | | // | | // *******|**|******* //

凸边形外壳

凸边形外壳 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 27   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Maxwell is a naughty boy. One da

A Round Peg in a Ground Hole POJ - 1584(凸边形与圆相交)

A Round Peg in a Ground Hole POJ - 1584 题目链接:https://vjudge.net/problem/POJ-1584#author=0 题意:要求钉子要钉入孔内,判断能否在指定点钉入 思路:先判断这些点围成的多边形是不是凸多边形,如果是那么判断圆是否在凸边形里,若在那么就输出“PEG WILL FIT“,不在凸边形里就输出“PEG WILL NOT FIT”,如果都不是凸边形那么输出“HOLE IS ILL-FORMED” // // Created

cocos2d-x-3.3-019-碰撞检测1-矩形区域是否相交

原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 Cocos里面的每个Node都有一个和它对应的矩形区域,通过api getBoundingBox()得到.碰撞监测就是判断两个物体的矩形区域是否有交叠,相应的API是intersectsRect.有交叠则认为是碰撞了. Demo及源码 基于cocos 3.4final https://github.com/cheyiliu/CollisionDetection Demo解读 每隔5s生成: 两架飞机,并从右往左飞行: 两颗子

cocos2d-x-3.3-020-碰撞检测2-物理引擎初探

原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 不懂了,没深入研究物理引擎...但用用还是可以的. Demo及源码 基于cocos 3.4final https://github.com/cheyiliu/CollisionDetection Demo解读 每隔5s生成: 两架飞机,并从右往左飞行: 两颗子弹,从左向右飞. 注册碰撞事件监听,剩下的事情就是等待碰撞事件的回调了. 若发生碰撞,则播放相关动画 主要代码 构建物理世界 auto scene = Scene::c

游戏碰撞之OBB算法实现(java代码实现)

公司业务需求 游戏2D模型有圆形和矩形,判断碰撞说白了就是检测 : 1.圆形跟圆形是否有相交 2.圆形跟矩形是否相交 3.矩形和矩形是否相交 先明白要实现的原理,才能有思路写代码 第1个最好判断,判断两个圆中心点的矩形是否小于这两个圆的半径之和 第2个纠结了我一下,不过也不难先看图圆跟矩形关系有4种情况,如下图 只要判断圆心到矩形4条边的距离都小于圆的半径或者圆心在矩形内则它们相交,还要判断圆心在矩形内是防止出现上面第四张图那样的特殊情况 圆心到边的距离有如下两种情况 两个箭头表示点到线段的距离

strcpy c标准库函数

C语言标准库函数strcpy,把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间. 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码 char * strcpy(char *dst,const char *src) //[1] { assert(dst != NUL

strcpy函数的实现【转】

转自:http://www.cnblogs.com/chenyg32/p/3739564.html 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码 char * strcpy(char *dst,const char *src) //[1] { assert(dst != NULL &&am