Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #define NOMINMAX
00027 #include <octovis/SceneObject.h>
00028 
00029 #ifndef RAD2DEG
00030 #define RAD2DEG(x) ((x) * 57.29577951308232087721)
00031 #endif
00032 
00033 namespace octomap {
00034 
00035   SceneObject::SceneObject() :
00036     m_zMin(0.0), m_zMax(1.0), m_colorMode(CM_FLAT) {
00037   }
00038 
00039   void SceneObject::heightMapColor(double h, GLfloat* glArrayPos) const {
00040     if (m_zMin >= m_zMax)
00041       h = 0.5;
00042     else{
00043       h = (1.0 - std::min(std::max((h-m_zMin)/ (m_zMax - m_zMin), 0.0), 1.0)) *0.8;
00044     }
00045 
00046     
00047     double r, g, b;
00048     double s = 1.0;
00049     double v = 1.0;
00050 
00051     h -= floor(h);
00052     h *= 6;
00053     int i;
00054     double m, n, f;
00055 
00056     i = floor(h);
00057     f = h - i;
00058     if (!(i & 1))
00059       f = 1 - f; 
00060     m = v * (1 - s);
00061     n = v * (1 - s * f);
00062 
00063     switch (i) {
00064     case 6:
00065     case 0:
00066       r = v; g = n; b = m;
00067       break;
00068     case 1:
00069       r = n; g = v; b = m;
00070       break;
00071     case 2:
00072       r = m; g = v; b = n;
00073       break;
00074     case 3:
00075       r = m; g = n; b = v;
00076       break;
00077     case 4:
00078       r = n; g = m; b = v;
00079       break;
00080     case 5:
00081       r = v; g = m; b = n;
00082       break;
00083     default:
00084       r = 1; g = 0.5; b = 0.5;
00085       break;
00086     }
00087 
00088     glArrayPos[0] = r;
00089     glArrayPos[1] = g;
00090     glArrayPos[2] = b;
00091   }
00092 
00093   void SceneObject::heightMapGray(double h, GLfloat* glArrayPos) const {
00094     if (m_zMin >= m_zMax)
00095       h = 0.5;
00096     else{
00097       h = std::min(std::max((h-m_zMin)/ (m_zMax - m_zMin), 0.0), 1.0) * 0.4 + 0.3; 
00098     }
00099 
00100     glArrayPos[0] = h;
00101     glArrayPos[1] = h;
00102     glArrayPos[2] = h;
00103   }
00104   
00105 
00106 }