iLyK Necrom
ncer:
можешь примерно объяснить принцип, по которому геодата хранится в .dat файлах?..... или линку дать?
Murkt:
18 байт заголовков
потом 65536 зон
256*256
зоны бывают трёх типов - цельные, разбитые и разбитые многослойные
цельная зона отгребает два слова описания - уровень земли и уровень воды. Маркер цельной зоны - 00 00. Т.е. в сумме с маркером - три слова, шесть байт
разбитая зона - 40 00 (40 в десятеричной - 64)
за ней идёт 64 слова, которые описывают мелкие ячейки этой зоны
т.е. 64 ячейки
разбитая многослойная - маркеры 41 00 и больше (собственно, количество ячеек в этой зоне)
iLyK Necrom
ncer:
а SolidZoneWithLayers ?
Murkt:
это уже из С4
потом
iLyK Necrom
ncer:
=)
Murkt:
и потом 64 блока ячеек - слово количества слоёв в данной ячейке (01 00, 02 00, 09 00, етц) = N, и N слов описаний ячейки на конкретно этом уровне
хоть чуть-чуть понятно?
)
iLyK Necrom
ncer:
начинаю улавливать смысл
Murkt:
то есть кусок из него будет такой - 01 00 25 64 01 00 25 64 02 00 25 64 37 85 01 00 25 64
несколько замечаний
я не помню, в каком порядке идут слои - сначала нижний, а потом верхний, или сначала верхний, а потом нижний
потом... описание цельной зоны - последние четыре бита вроде как описывают проходимость зоны... я ни разу не видел, чтобы значение отличалось от "всё проходимо"
для получения высоты мы эти биты просто зануляем... получается, что дискретность цельных зон - 16 попугаев
у ячеек последние четыре бита точно описывают проходимость
для получения высоты, мы их зануляем и сдвигаем вправо ( >> ) на один бит. Поэтому дискретность ячеек - восемь попугаев.
ну и там ещё приколы... По идее, если между слоями расстояние меньше 24, то они "коннектятся", то есть можно перейти с нижнего уровня на верхний
хмм... что ещё?
вроде больше ничего
iLyK Necrom
ncer:
ууу.....начинает закипать
Murkt:
потому про SolidZoneWithLayers
фактически - это цельные многослойные зоны
они были нужны, когда уровней много, но в пределах уровня высоты не изменялись
в пределах всех уровней
слоёв.
обозначаются они маркерами между 01 00 и 3F 00, включительно
iLyK Necrom
ncer:
не совсем понял цельный-разбитый тип....
Murkt:
смотри
в смысле - что именно?
Murkt:
ты не понял solid zone with layers?
iLyK Necrom
ncer:
не-не
iLyK Necrom
ncer:
solid/divided
Murkt:
не понял различий между solid и divided зонами?
iLyK Necrom
ncer:
что-то вроде того
на конкретном примере просвети?
Murkt:
смотри
разбитая зона:
___/\___/----\____/----
цельная зона:
__________________________________
iLyK Necrom
ncer:
=)
но на цельной зоне вода же может быть... так?
Murkt:
разбитой зоной имитировать цельную можно, но не нужно
тебе ответить как задумывалось, или честно?
iLyK Necrom
ncer:
ну
Murkt:
задумывалось, что может быть, и потому в формате это есть
а фактически вышло так, что все водные зоны описываются в отдельном файле, если я не ошибаюсь
)
iLyK Necrom
ncer:
т.е. цельная зона - это, например, равнина какая-то...
Murkt:
да
площадь в городе
ну и просто более-менее равномерные площадки
iLyK Necrom
ncer:
это ясно
в одном файле описано 256 зон?
Murkt:
нет, 256 * 256 = 65536
iLyK Necrom
ncer:
т.е. квадрат 256*256
Murkt:
"территория"
iLyK Necrom
ncer:
весь мир поделен на территории, а они, в свою очередь, на зоны...
так?
Murkt:
кстати. Размер ячейки - 16*16 попугаев. Так как в зоне 8*8 ячеек, то размер зоны - 128*128 попугаев
да
в с1 минимальный размер файла с геодатой - 65536 * 6 + 18 = 393 234
разве что я могу с заголовками немного ошибиться, с их длиной