Тема: Infinity Pre-Alpha
Показать сообщение отдельно
Старый 27.06.2010, 10:41   #51
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: 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 метров по каждой из осей.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием