Ответ: Infinity Pre-Alpha
Хотя я даже зря взял отрицательный диапазон float, т.к. координаты квадрантов и так будут иметь свой знак. Пусть будет 0...200000
Допустим необходимо отрисовать квадрант игрока и все квадранты вокруг него, т.е. например игрок находится в квадранте Q1(10,12,-10) и имеет координаты P1(59000, 30200, 4000) а например база находится в координате Q2(11,11,-9) и имеет координаты P2(9000, 200, 40000), то вычисляем локальную позицию базы так PL2 = (Q1-Q2)* 200000 + P2 = (-1, -1, -1) * 200000 + (9000, 200, 40000) = (-191000, 199800, -160000)
А координаты игрока не изменятся, т.к. это будет текущий квадрант.
UPD: Посмотрел на расчеты и понял, что предложенный в начале диапазон лучше подходит, т.к. координаты внутри текущего квадранта будут "лучше" т.к. будут иметь меньший порядок. В итоге получается, что для 27 квадрантов (куб 3х3х3) максимальная координата будет ±300000 что вполне устраивает.
Еще я посчитал какие расстояния можно получить при использовании типа long - приблизительно 3 689 348 814 741 910 322 000 000 метров по каждой из осей.
|