Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BinToKamaeScale.cxx

Go to the documentation of this file.
00001 
00012 #include "BinToKamaeScale.h"
00013 
00014 #include <cmath>
00015 
00016 #include <cassert>
00017 
00018 BinToKamaeScale::
00019 BinToKamaeScale ( const char * name )
00020   : BinToColor ( name )
00021 {
00022 }
00023 
00024 BinToKamaeScale::BinToKamaeScale ( const BinToKamaeScale & bin_to_color )
00025   : BinToColor ( bin_to_color )
00026 {
00027 }
00028 
00029 BinToColor * BinToKamaeScale:: clone () const
00030 {
00031   return new BinToKamaeScale ( *this );
00032 }
00033 
00034 void
00035 BinToKamaeScale::
00036 doubleToColor ( double value, Color & color ) const
00037 {
00038    double dv = m_range.length ();
00039    double vmin = m_range.low ();
00040    double z = ( value - vmin ) / dv;
00041    assert ( z >= 0. && z <= 1.0 );
00042 
00043    double r = std::min ( 255., 
00044                          113.9 * sin ( 7.64 * pow ( z, 1.705 ) + 0.701 )
00045                          - 916.1 * pow ( ( z + 1.755), 1.862 )
00046                          + 3587.9 * z + 2563.4 );
00047    double g = std::min ( 255.,
00048                          70.0 * sin ( 8.7 * pow ( z, 1.26 ) - 2.418 )
00049                          + 151.7 * pow ( z, 0.5 )
00050                          + 70.0 );
00051    double b = std::min ( 255.,
00052                          194.5 * pow ( z, 2.88 )
00053                          + 99.72 * exp ( -77.24 *pow ( z - 0.742, 2 ) )
00054                          + 45.4 * pow ( z, 0.089 )
00055                          + 10.0 );
00056 
00057    int red   = static_cast < int > ( r );
00058    int green = static_cast < int > ( g );
00059    int blue  = static_cast < int > ( b );
00060 
00061    assert ( red < 256 && green < 256 && blue < 256 );
00062    color.setColor ( red, green, blue );
00063 }

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3