博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d-x 求相交矩阵
阅读量:6222 次
发布时间:2019-06-21

本文共 1030 字,大约阅读时间需要 3 分钟。

cocos2d-x有推断矩阵相交的方法 CCRect::intersectsRect(CCRect& rect)但可惜没有提供求两个相交矩阵的方法,我作了总结,代码例如以下:
CCRect Tools::intersectsRect(const CCRect &rectA, const CCRect &rectB){	CCPoint ori;    //左下角顶点     cocos2dx的CCRect是以左下角为原点,w,h为參数(宽和高),并非左上角是top,右下角为bottom	CCPoint topM;	//右下角顶点	float width = 0.f, height = 0.f;	if (rectA.intersectsRect(rectB))	{		ori.x = max(rectA.getMinX(), rectB.getMinX()); //左下角x坐标取两个矩形ori顶点x坐标大的		ori.y = max(rectA.getMinY(), rectB.getMinY()); //左下角y坐标取两个矩形ori顶点y坐标大的		topM.x = min(rectA.getMaxX(), rectB.getMaxX()); //右上角x坐标取两个矩形右上角顶点x坐标小的		topM.y = min(rectA.getMaxY(), rectB.getMaxY());		width = topM.x - ori.x;		height = topM.y - ori.y;		return CCRectMake(ori.x, ori.y, width, height);	}	return CCRectMake(0, 0, -1.f, -1,f);}
注意:CCRect的构造函数是CCRect(ori.x, ori.y, w, h)  ,它的示意图例如以下:

求矩形相交并不简单,由于要考虑好多可能性,例如以下:
这4种情况仅仅是当中的一些,它们都不一样,那我们是不是要分情况一一写出代码呢?那代码写一千行都不够,这时可能非常多人要打退堂鼓開始网上搜现成的或抱大牛大腿了。值得注意的是求矩形相交是曾出如今计算机二级考试和初中生计算机大赛中的题目,假设有这么麻烦就不会出现作为考题了。你细致观察下就会发现,事实上不用这么麻烦,不管相交矩形怎么摆,他们的顶点(ori)和对角线上的点都符合一定规律,所以才有了这么简洁的代码。规律见凝视

你可能感兴趣的文章
开源SIP服务器加密软件NethidPro升级
查看>>
linux的简单命令
查看>>
我的友情链接
查看>>
大型网站技术架构(一)大型网站架构演化
查看>>
百度页面分享插件源代码
查看>>
易宝典文章——玩转Office 365中的Exchange Online服务 之六 了解Exchange Online对于邮箱使用的限制...
查看>>
确定jdk是32位版本还是64位版本
查看>>
linux下文件删除的原理
查看>>
python os.path模块
查看>>
评"抄袭就是生产力:评中国盛行的成功学逻辑"
查看>>
红客专用电脑安全工具箱 v 1.9
查看>>
$.noConflict()方法--常用的方式
查看>>
MongoDB的真正性能
查看>>
使用Zabbix监控windows服务
查看>>
win7 从硬盘重装操作系统(64位)
查看>>
CentOS-7安装Kubernetes-1.12.1
查看>>
如何进行感恩节的营销策划工作
查看>>
CCNP学习之路之GLBP
查看>>
H3C 6604通过OSPF向邻居发送本地静态路由
查看>>
报错java.lang.Long cannot be cast to java.lang.Integer解析
查看>>