VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtCoordinatePack.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
7 #pragma once
9 
10 namespace makVrv
11 {
15  {
16  public:
17 
19  static inline void pack(const double pos[3], float pospack[4])
20  {
21  double tmp[3];
22  tmp[0] = floor(pos[0]);
23  tmp[1] = floor(pos[1]);
24  tmp[2] = floor(pos[2]);
25 
26  double frac = floor((pos[0] - tmp[0]) * 256.0) +
27  (floor((pos[1] - tmp[1]) * 256.0) * 256.0) +
28  (floor((pos[2] - tmp[2]) * 256.0)) * 65536.0;
29 
30  pospack[0] = static_cast<float>(tmp[0]);
31  pospack[1] = static_cast<float>(tmp[1]);
32  pospack[2] = static_cast<float>(tmp[2]);
33  pospack[3] = static_cast<float>(frac);
34  }
35 
37  static inline void unpack( const float pospack[4], double pos[3] )
38  {
39  double frac = pospack[3];
40  pos[2] = floor(frac / 65536.0);
41  frac -= pos[2] * 65536.0;
42  pos[2] /= 256.0;
43  pos[2] += pospack[2];
44 
45  pos[1] = floor(frac / 256.0);
46  frac -= pos[1] * 256.0;
47  pos[1] /= 256.0;
48  pos[1] += pospack[1];
49 
50  pos[0] = frac / 256.0;
51  pos[0] += pospack[0];
52  }
53  };
54 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)