46 #define EVENT_WINDOW_SITES(radius) ((((radius)*2+1)*((radius)*2+1))/2+1)
54 MANHATTAN_TABLE_RADIUS_0 = 0,
55 MANHATTAN_TABLE_RADIUS_1,
56 MANHATTAN_TABLE_RADIUS_2,
57 MANHATTAN_TABLE_RADIUS_3,
58 MANHATTAN_TABLE_RADIUS_4,
59 MANHATTAN_TABLE_SHORT = MANHATTAN_TABLE_RADIUS_2,
60 MANHATTAN_TABLE_LONG = MANHATTAN_TABLE_RADIUS_4,
61 MANHATTAN_TABLE_EVENT = MANHATTAN_TABLE_RADIUS_4
114 if (radius >=
sizeof(m_firstIndex)/
sizeof(m_firstIndex[0]))
116 FAIL(ILLEGAL_ARGUMENT);
118 return m_firstIndex[radius];
134 const SPoint & GetPoint(
const u32 index)
const
136 if (index >= ARRAY_LENGTH)
138 FAIL(ILLEGAL_ARGUMENT);
140 return m_indexToPoint[index];
149 s32
FromPoint(
const Point<s32>& offset, u32 radius)
const;
155 void FillFromBits(SPoint& pt, u8 bits, u32 maxRadius);
160 static inline u32 ManhattanArea(u32 maxDistance)
165 Point<s32> m_indexToPoint[ARRAY_LENGTH];
168 u32 m_firstIndex[R+2];
170 void InitEscapesByDirTable();
171 u8 m_escapesByDirection[Dirs::DIR_COUNT][ARRAY_LENGTH];
173 void InitHorizonsByDirTable();
174 u8 m_horizonsByDirection[Dirs::DIR_COUNT][ARRAY_LENGTH];
u32 GetFirstIndex(const u32 radius) const
Definition: MDist.h:112
u32 GetLastIndex(const u32 radius) const
Definition: MDist.h:129
void FillRandomSingleDir(SPoint &pt, Random &random) const
Definition: MDist.tcc:233
static const u32 EVENT_WINDOW_DIAMETER
Definition: MDist.h:79
s32 FromPoint(const Point< s32 > &offset, u32 radius) const
Definition: MDist.tcc:201
u32 GetTableSize(u32 maxRadius) const
Definition: MDist.tcc:187
#define EVENT_WINDOW_SITES(radius)
Definition: MDist.h:46