易码技术论坛

 找回密码
 加入易码
搜索
查看: 306440|回复: 9

[求助]LAVA中的碰撞问题(源码分析,精确到位!)

[复制链接]
发表于 2007-3-11 08:09:39 | 显示全部楼层
看过了,不过不知道是不是能精确到位//。。
发表于 2007-3-11 08:34:40 | 显示全部楼层
LS的话有意思,看过了又不知道~~~

这样的判断只能在前景图和背景图的重叠后有差异的时候才有效果.
如果背景上有唯一一个点,正好跟前景上的某个点重合,那就判断不出来了.

而且strcmp是以0为结束判断的,如果数组中有一个0那么就不会判断0后面的数,如果两个数组开头都是0就没结果了,同时因为是以0为结束符,所以用strcmp判断数组也有可能超出数组外,同样会有判断错误.

(dogx/16)*16 就是把低4位置0,直接(dogx & 0xfffffff0)就行了.
 楼主| 发表于 2007-3-11 11:20:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-3-11 12:08:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-3-11 15:09:46 | 显示全部楼层
虽然可以人为避免出现0的情况,但是你的程序还没做到这一点
因为还要判断右面的16*16的空间,还有用strcmp要有结束符
所以至少要这样char sa[33],sb[33],sc[33],sd[33];
然后
sa[32] = 0;
sb[32] = 0;
sc[32] = 0;
sd[32] = 0;

(说到这,GetBlock不是忽略低3位么??8*16就行了)

假设屏幕上有一条线:
11111111

图是
11111111
11000011
11111111

当图的第一行与屏幕上的一行重合后原图并没有改变,除非等到重叠到第二行.

用 异或 的方法可以判断出来,但是这样就多了几次操作......
 楼主| 发表于 2007-3-11 15:48:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-3-11 16:11:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-3-11 18:08:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-3-12 08:54:47 | 显示全部楼层
GetBlock忽略X坐标的低8位,所以直接这样写就行了
GetBlock(dogx,dogy,8,16,0,sc);
GetBlock(dogx+8,dogy,8,16,0,sb);

(for中的程序写错了)
 楼主| 发表于 2007-3-10 20:44:26 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-24 03:06 , Processed in 0.010733 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表