Adam wrote:
> Hi everyone,
> I'm trying to understand how the following define works (render.cpp):
> #define rand2d(a, b)
> jitttab[(int)(hashTable[(int)(hashTable[(int)((a)&0xfff)]^(b))&0xfff])&0xff]
>
> I got that jitttab is an array of 256 random float ranging from -0.5 to 0.5.
>
Re-write it to read it more easily:
idx = a;
idx = hashTable[idx & 0xfff]^b;
idx = hashTable[idx & 0xfff];
jitttab[ idx & 0xff ];
The & 0xff and &0xfff are just fast ways of doing the modulo operation
(i.e. make sure that we do not access beyond the end of the hash array).
The XOR (^) is probably just there to combine the hashes since rand2d
takes 2 arguments.
Wolfgang
Post a reply to this message
|