Другие «ответы» отвечают на ваш вопрос, но я добавляю это в ознакомительных целях.
enum SquareDelta {
DELTA_NNW= 017,DELTA_NN = 020,DELTA_NNE= 021
DELTA_NWW= 006,DELTA_NW = 007,DELTA_N = 010,DELTA_NE = 011,DELTA_NEE= 012,
DELTA_W =-001,DELTA_ZER= 000,DELTA_E = 001,
DELTA_SWW=-012,DELTA_SW =-011,DELTA_S =-010,DELTA_SE =-007,DELTA_SEE=-006,
DELTA_SSW=-021,DELTA_SS =-020,DELTA_SSE=-017,
};
Опять в двоичном формате (комплимент от двух):
enum SquareDelta {
DELTA_NNW=001111,DELTA_NN =010000,DELTA_NNE=010001
DELTA_NWW=000110,DELTA_NW =000111,DELTA_N =001000,DELTA_NE =001001,DELTA_NEE=001010,
DELTA_W =111111,DELTA_ZER=000000,DELTA_E =000001,
DELTA_SWW=110110,DELTA_SW =110111,DELTA_S =111000,DELTA_SE =111001,DELTA_SEE=111010,
DELTA_SSW=101111,DELTA_SS =110000,DELTA_SSE=110001,
};
Таким образом, координата E / W равна SquareDelta&7
, а координата N / S равна SquareDelta&070+SquareDelta&4
.
При дальнейшем рассмотрении представляется, что они предполагали, чтобы младшая значащая восьмеричная цифра находилась в масштабе от -2 до 2 для обозначения W / E-ness, а следующая восьмеричная цифра была в масштабе от -2 до 2 до означать N / S-сущность. Если вы добавите DELTA_W+DELTA_W+DELTA_N
и урежете до двух восьмеричных цифр, вы получите 006, значение DELTA_NWW
. Поскольку наименее значимое восьмеричное число влияет на верхнюю часть, дельты ограничены плюсом или минусом два.