c++ - 这个c++语句检查什么? (方框2d)

标签 c++ box2d

if ((catA & maskB) != 0 && (catB & maskA) != 0)

位于 Box2d's manual: 6.2 ,用于检查两个对象是否应该碰撞(过滤后)

最佳答案

它检查catA与maskB至少有一个共同的“1”位,并且catB与maskA至少有一个共同的“1”位。

例如,如果 catA 为 3(二进制 00000011)且 maskB 为 10101010),则 (catA & maskB) != 0 为 true,因为 catA & maskB 为 00000010。

这称为屏蔽,这意味着仅保留感兴趣的位。

您经常有这种构造:

#define READ 1
#define WRITE 2
#define READWRITE (READ|WRITE)
#define DIRECTORY 4

int i=getFileInfo("myfile");
if(i & READWRITE)puts("you can read or write in myfile"); 
if(i & DIRECTORY)puts("myfile is a directory");

顺便说一句,“i & DIRECTORY”与“(i & DIRECTORY) != 0”的含义相同

关于c++ - 这个c++语句检查什么? (方框2d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046920/

相关文章:

c++ - 计算 cv::Points2f vector 中的重复项

c++ - 在 boost :multiprecision 中定义多精度 pi

java - LibGDX + Box2D : Object Positioning

java - Box2d setAngularVelocity 不适用于高速

java - libgdx:物体碰撞时的速度损失

c++ - boost::optional 与 std::optional 对于不可复制的对象

c++ - 在 COM IDL 中如何从 COM 依赖引用枚举?

c++ - 如何在 box2d 中创建椭圆形状?

box2d: GetLinearVelocity() 检测运动?

c++ - 排列中的交换次数