VR-Forces 4.0.4 Class Documentation
include/vrvGraphics/DtCoordinatePack.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00007 #pragma once
00008 #include <vrvGraphics/vrvGraphics.h>
00009 
00010 namespace makVrv
00011 {
00014    class DT_DLL_VRVGRAPHICS DtCoordinatePack
00015    {
00016    public:
00017 
00019       static inline void pack(const double pos[3], float pospack[4])
00020       {
00021          double tmp[3];
00022          tmp[0] = floor(pos[0]);
00023          tmp[1] = floor(pos[1]);
00024          tmp[2] = floor(pos[2]);
00025 
00026          double frac = floor((pos[0] - tmp[0]) * 256.0) +
00027             (floor((pos[1] - tmp[1]) * 256.0) * 256.0) + 
00028             (floor((pos[2] - tmp[2]) * 256.0)) * 65536.0;
00029 
00030          pospack[0] = tmp[0];
00031          pospack[1] = tmp[1];
00032          pospack[2] = tmp[2];
00033          pospack[3] = frac; 
00034       }
00035 
00037       static inline void unpack( const float pospack[4], double pos[3] )
00038       {  
00039           double frac = pospack[3];
00040           pos[2] = floor(frac / 65536.0);
00041           frac -= pos[2] * 65536.0;
00042           pos[2] /= 256.0;
00043           pos[2] += pospack[2];
00044 
00045           pos[1] = floor(frac / 256.0);
00046           frac -= pos[1] * 256.0;
00047           pos[1] /= 256.0;
00048           pos[1] += pospack[1];
00049 
00050           pos[0] = frac / 256.0;          
00051           pos[0] += pospack[0];
00052       }
00053    };
00054 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)