Рассмотрим две системы координат: одну для самих объектов, одну для кусков, в которой находятся объекты. Рассмотрим размер блока 4, что означает, что объект с координатой 0 находится в куске 0, объект в координате 3 также находится в куске 0, но объект в координате 8 находится в блоке 2, объект в координате -4 находится в куске -1.Chunking Arithmetics
Расчет количества куска для объекта с положительной позицией легко: object.number/chunk_size
Но я не нашел формуляр, который вычисляет правильное положение куска для объектов при отрицательных позициях:
-4/4 = -1
является правильным, но -2/4 = 0
не требуемый результат, хотя -4/4 -1 = -2
теперь неверно, но -2/4 -1 = -1
теперь правильно ...
есть сладкий, короткий способ вычислить каждую позицию, или же мне нужно проверить 2 условия:
chunkx = objectx > 0 ?
objectx/chunksize :
objectx % chunksize == 0 ?
objectx/chunksize :
objectx/chunksize - 1;
Альтернатива:
chunkx = objectx > 0 || objectx % chunksize == 0 ?
objectx/chunksize :
objectx/chunksize -1;
На стороне записки: вычисления положения объекта в пределах фрагмента является:
internalx = objectx - chunkx * chunksize
для как положительные, так и отрицательные (-4 -> 0 ; -2 -> 2; 1 -> 1; 4 -> 0)
Есть ли более элегантный способ рассчитать это, что я наглядно наблюдаю здесь?