赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
回复 kojoy 的帖子
设:
(x11, y11) 为矩形1左上角坐标,(x12, y12) 为矩形1右下角坐标
(x21, y21) 为矩形1左上角坐标,(x22, y22) 为矩形1右下角坐标
(坐标为屏幕空间坐标)
if x12 < x21 then 不相交,矩形1在矩形2左边
else if x11 > x22 then 不相交,矩形1在矩形2右边
else if y12 < y21 then 不相交,矩形1在矩形2上面
else if y11 > y22 then 不相交,矩形1在矩形2下面
else 矩形1矩形2相交
回复 古明地馨 的帖子
哦~包围盒的兄弟似乎很多呀,没怎么研究过……如果是基于像素运算的不就完全可以精确判断了吗……以前也用过四叉树来表示 2D 场景,可以做一些简单的碰撞检测。3D 的 BSP 就是判断凸集和平面的相交了吧,不知和八叉树相比如何?
另外 david 的那个算法不知是不是八云在3楼说的那个像素算法,这个如果 get_pixel 是和 RM 的一样基于 GDI 的话,那慢是肯定的了,因为 get_pixel(以及 set_pixel)本身就很慢。位图资源在内存中初始是可被内存管理器移动的,如果 CPU 需要访问一块内存,那需要先锁定。get_pixel 和 set_pixel 都会先锁定位图资源,然后更新像素,最后解锁,这个过程做一次没什么,放在循环里面做就能看到速度的差别。解决方法也不少,第一种是在 set/get_pixel 之前预先通过 LockBits 锁定位图数据,然后再逐点 set/get_pixel,循环结束后解锁,这样就不会每次调用 set/get_pixel 都去锁定/解锁了;第二种是通过 GetBitmapBits 把位图数据一次性拷贝到系统内存的缓冲区中,然后直接在这个缓冲区中随机访问,这样效率也是很高 |
|