worldsimconfig.h
1 /********************************************************************************
2  * WorldSim -- library for robot simulations *
3  * Copyright (C) 2008-2011 Gianluca Massera <emmegian@yahoo.it> *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the Free Software *
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
18  ********************************************************************************/
19 
20 #ifndef WORLDSIMCONFIG_H
21 #define WORLDSIMCONFIG_H
22 
23 // FARSA_WSIM_TEMPLATE is also for classes that are completely inline
24 #ifdef WIN32
25  #ifndef NOMINMAX
26  //--- the min and max macros defined by window will conflicts with functions defined in YARP_math
27  #define NOMINMAX
28  #endif
29  #ifdef FARSA_WSIM_BUILDING_DLL
30  #define FARSA_WSIM_API __declspec(dllexport)
31  #define FARSA_WSIM_TEMPLATE __declspec(dllexport)
32  #else
33  #define FARSA_WSIM_API __declspec(dllimport)
34  #define FARSA_WSIM_TEMPLATE
35  #endif
36  #define FARSA_WSIM_INTERNAL
37 #else
38  #define FARSA_WSIM_API
39  #define FARSA_WSIM_TEMPLATE
40  #define FARSA_WSIM_INTERNAL __attribute__ ((visibility ("hidden")))
41 #endif
42 
43 extern bool FARSA_WSIM_API initWorldSimLib();
44 static const bool worldSimInitializer = initWorldSimLib();
45 
46 //--- read it as: x.yy.zz where
47 //--- x is major version
48 //--- yy is minor version
49 //--- zz is patch version
50 //--- Example: version 2.4.6 is 20406
51 #define FARSA_WSIM_VERSION 10203
52 
53 #include <QDebug>
54 #include <QtGlobal>
55 #include <QMetaType>
56 
58 #define UNUSED_PARAM( a ) ( (void) a );
59 
60 namespace farsa {
61 
65 typedef float real;
66 
67 #define PI_GRECO 3.14159265358979323846f
68 
77 inline FARSA_WSIM_TEMPLATE real toRad( real x ) {
78  return (x)*PI_GRECO/180.0f;
79 }
80 
84 inline FARSA_WSIM_TEMPLATE real toDegree( real x ) {
85  return (x)*180.0f/PI_GRECO;
86 }
87 
91 template<class T, class U>
92 FARSA_WSIM_TEMPLATE const T min( const T& t1, const U& t2 ) {
93  if ( t1 < t2 ) {
94  return t1;
95  } else {
96  return (T)t2;
97  }
98 }
99 
103 template<class T, class U>
104 FARSA_WSIM_TEMPLATE const T max( const T& t1, const U& t2 ) {
105  if ( t1 > t2 ) {
106  return t1;
107  } else {
108  return (T)t2;
109  }
110 }
111 
115 inline FARSA_WSIM_TEMPLATE real ramp( real minv, real maxv, real value ) {
116  if ( value > maxv ) return maxv;
117  if ( value < minv ) return minv;
118  return value;
119 }
120 
130 inline FARSA_WSIM_TEMPLATE float linearMap( float x, float min = -10, float max = 10,
131  float outMin = -1, float outMax = 1 ) {
132  float m = ( outMax-outMin )/( max-min );
133  float q = outMin - m*min;
134  float ret = m*x+q;
135  if (ret < outMin) return outMin;
136  if (ret > outMax) return outMax;
137  return ret;
138 }
139 
149 inline FARSA_WSIM_TEMPLATE float invLinearMap( float x, float min = -10, float max = 10,
150  float outMin = -1, float outMax = 1 ) {
151  double m = - ( outMax-outMin )/( max-min );
152  double q = outMax - m*min;
153  double ret = m*x+q;
154  if (ret < outMin) return outMin;
155  if (ret > outMax) return outMax;
156  return ret;
157 }
158 
159 } // end namespace farsa
160 
161 #include "simpletimer.h"
162 
163 #endif