float X,Y;
X = mx;
Y = my;
SX = X * 2.0 / ISO_WIDTH;
modf(SX,&ISO_X);
SX = SX - ISO_X;
SY = Y * 4.0 / (ISO_HEIGHT * 3.0);
modf(SX,&ISO_Y);
if(((int)ISO_X&1)^((int)ISO_Y&1))
{
SY+=(SX/3.0);
}
else
{
SY+=((1.0-SX)/3.0);
}
modf(SY,&ISO_Y);
if((ISO_X - ISO_Y) * 0.5<0.0)
{
modf((ISO_X - ISO_Y) * 0.5-1.0,&ISO_X);
}
else
{
modf((ISO_X - ISO_Y) * 0.5,&ISO_X);
}
положительные значения обрабатываются адекватно теперь, но отрицательные чуть чуть не совпадают