VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCoordinatePack.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
7 #pragma once
8 #include <vrvCore/vrvCore.h>
9 
10 #include <math.h>
11 
12 namespace makVrv
13 {
17  {
18  public:
19 
21  static inline void pack(const double pos[3], float pospack[4])
22  {
23  double tmp[3];
24  tmp[0] = floor(pos[0]);
25  tmp[1] = floor(pos[1]);
26  tmp[2] = floor(pos[2]);
27 
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;
31 
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);
36  }
37 
39  static inline void unpack( const float pospack[4], double pos[3] )
40  {
41  double frac = pospack[3];
42  pos[2] = floor(frac / 65536.0);
43  frac -= pos[2] * 65536.0;
44  pos[2] /= 256.0;
45  pos[2] += pospack[2];
46 
47  pos[1] = floor(frac / 256.0);
48  frac -= pos[1] * 256.0;
49  pos[1] /= 256.0;
50  pos[1] += pospack[1];
51 
52  pos[0] = frac / 256.0;
53  pos[0] += pospack[0];
54  }
55  };
56 }
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.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)