Zc is along the world Z, right ? Your positive world Z
goes along the negative Y of your grid, unlike X that goes positive to positive.
Hence the reversed fraction.

Patrick.

God this is driving me nuts. It should be so
simple!

I have a world system whereby a grid of 31x31 in grid units is mapped over a range of real values ranging from -15.5 to +15.5

For collision detection reasons, I need a function that will basically do a mod such that when applied to my real X or Z coordinate, it tells me (as a range 0-1) how far into a grid cell I am. I would expect the routine to return 0.1 if I'm a tenth into a particular grid square.

But, whatever combinations of mod,floor,ceil,etc I've tried, when the real coord is negative, I get a 0.9 instead of a 0.1

I'm kinda looking for a float version of "&" iyswim.

Any ideas what I'm doing wrong ?

I have a world system whereby a grid of 31x31 in grid units is mapped over a range of real values ranging from -15.5 to +15.5

For collision detection reasons, I need a function that will basically do a mod such that when applied to my real X or Z coordinate, it tells me (as a range 0-1) how far into a grid cell I am. I would expect the routine to return 0.1 if I'm a tenth into a particular grid square.

But, whatever combinations of mod,floor,ceil,etc I've tried, when the real coord is negative, I get a 0.9 instead of a 0.1

I'm kinda looking for a float version of "&" iyswim.

Any ideas what I'm doing wrong ?

==========================================

RoundDown=crt floorf btw

tINT GetGridXFromWorld (tF32 WorldX)

{

return tINT(RoundDown(WorldX+15.5F));

}

tINT GetGridYFromWorld (tF32 WorldZ)

{

return tINT(RoundDown(15.5f-WorldZ));

}

tINT GetGridXFromWorld (tF32 WorldX)

{

return tINT(RoundDown(WorldX+15.5F));

}

tINT GetGridYFromWorld (tF32 WorldZ)

{

return tINT(RoundDown(15.5f-WorldZ));

}

I would expect this function to return how far into
the current square I am as a normalised "percentage". It's changed a lot but
this is definitely wrong. I just can't seem to fix it!

tF32 Frac=Abs((Zc+0.5F)-RoundDown(Zc+0.5F));

Regards,

Paul Johnson.

www.rubicondev.com

tF32 Frac=Abs((Zc+0.5F)-RoundDown(Zc+0.5F));

Regards,

Paul Johnson.

www.rubicondev.com