21 static inline void pack(
const double pos[3],
float pospack[4])
24 tmp[0] = floor(pos[0]);
25 tmp[1] = floor(pos[1]);
26 tmp[2] = floor(pos[2]);
28 double frac = floor((pos[0] - tmp[0]) * 256.0) +
29 (floor((pos[1] - tmp[1]) * 256.0) * 256.0) +
30 (floor((pos[2] - tmp[2]) * 256.0)) * 65536.0;
32 pospack[0] =
static_cast<float>(tmp[0]);
33 pospack[1] =
static_cast<float>(tmp[1]);
34 pospack[2] =
static_cast<float>(tmp[2]);
35 pospack[3] =
static_cast<float>(frac);
39 static inline void unpack(
const float pospack[4],
double pos[3] )
41 double frac = pospack[3];
42 pos[2] = floor(frac / 65536.0);
43 frac -= pos[2] * 65536.0;
47 pos[1] = floor(frac / 256.0);
48 frac -= pos[1] * 256.0;
52 pos[0] = frac / 256.0;
static void unpack(const float pospack[4], double pos[3])
Unpack 3 doubles from 4 floats.
Definition: DtCoordinatePack.h:39
The pack class packs 3 doubles into 4 floats.
Definition: DtCoordinatePack.h:16
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
static void pack(const double pos[3], float pospack[4])
Pack 3 doubles into 4 floats.
Definition: DtCoordinatePack.h:21
Contains DLL export macros.