Added Parula-like color map
removed bug on un-clamped set gray
This commit is contained in:
parent
73b0576edf
commit
f4686b3e0f
|
|
@ -184,6 +184,27 @@ public:
|
||||||
(*vi).C().SetColorRamp(minq,maxq,(*vi).Q());
|
(*vi).C().SetColorRamp(minq,maxq,(*vi).Q());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief This function colores all the faces of a mesh with a hue color shade dependent on the quality.
|
||||||
|
|
||||||
|
If no range of quality is passed it is automatically computed.
|
||||||
|
*/
|
||||||
|
static void PerVertexQualityRampParula(MeshType &m, float minq=0, float maxq=0)
|
||||||
|
{
|
||||||
|
RequirePerVertexQuality(m);
|
||||||
|
RequirePerVertexColor(m);
|
||||||
|
|
||||||
|
if(minq==maxq)
|
||||||
|
{
|
||||||
|
std::pair<float,float> minmax = Stat<MeshType>::ComputePerVertexQualityMinMax(m);
|
||||||
|
minq=minmax.first;
|
||||||
|
maxq=minmax.second;
|
||||||
|
}
|
||||||
|
for(VertexIterator vi=m.vert.begin();vi!=m.vert.end();++vi)
|
||||||
|
if(!(*vi).IsD())
|
||||||
|
(*vi).C().SetColorRampParula(minq,maxq,(*vi).Q());
|
||||||
|
}
|
||||||
|
|
||||||
/*! \brief This function colores all the faces of a mesh with a hue color shade dependent on the quality.
|
/*! \brief This function colores all the faces of a mesh with a hue color shade dependent on the quality.
|
||||||
|
|
||||||
If no range of quality is passed it is automatically computed.
|
If no range of quality is passed it is automatically computed.
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@ public:
|
||||||
inline Color4 ( const Point4<T> &c) :Point4<T>(c) {}
|
inline Color4 ( const Point4<T> &c) :Point4<T>(c) {}
|
||||||
inline Color4 (){}
|
inline Color4 (){}
|
||||||
inline Color4 (ColorConstant cc);
|
inline Color4 (ColorConstant cc);
|
||||||
|
inline Color4 (unsigned int cc);
|
||||||
|
|
||||||
template <class Q>
|
template <class Q>
|
||||||
inline void Import(const Color4<Q> & b )
|
inline void Import(const Color4<Q> & b )
|
||||||
|
|
@ -147,6 +148,27 @@ public:
|
||||||
*this= Color4<T>(Color4<T>::Blue);
|
*this= Color4<T>(Color4<T>::Blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void SetColorRampParula(const float &minf,const float &maxf ,float v)
|
||||||
|
{
|
||||||
|
if(minf>maxf) { SetColorRampParula(maxf,minf,maxf+(minf-v)); return; }
|
||||||
|
SetColorRampParula((v-minf)/(maxf-minf));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void SetColorRampParula(float v)
|
||||||
|
{
|
||||||
|
if(v<0) v=0;
|
||||||
|
else if(v>1) v=1;
|
||||||
|
|
||||||
|
unsigned int ParuVal[9]={0xff801627, 0xffe16303, 0xffd48514,
|
||||||
|
0xffc6a706, 0xff9eb938, 0xff73bf92,
|
||||||
|
0xff56bad9, 0xff2ecefc, 0xff0afaff};
|
||||||
|
int ind = int(floor(v*8.0f));
|
||||||
|
float div = (v*8.0f - ind);
|
||||||
|
if(div<0) div=0;
|
||||||
|
else if(div>1) div=1;
|
||||||
|
lerp(Color4<T>(ParuVal[ind]), Color4<T>(ParuVal[ind+1]), div);
|
||||||
|
}
|
||||||
|
|
||||||
void SetHSVColor( float h, float s, float v)
|
void SetHSVColor( float h, float s, float v)
|
||||||
{
|
{
|
||||||
float r,g,b;
|
float r,g,b;
|
||||||
|
|
@ -185,7 +207,10 @@ public:
|
||||||
|
|
||||||
inline static Color4 GrayShade(float f)
|
inline static Color4 GrayShade(float f)
|
||||||
{
|
{
|
||||||
return Color4(f,f,f,1);
|
if(f<0) f=0.0f;
|
||||||
|
else if(f>1) f=1.0f;
|
||||||
|
|
||||||
|
return Color4(f,f,f,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void SetGrayShade(float f)
|
inline void SetGrayShade(float f)
|
||||||
|
|
@ -301,6 +326,18 @@ inline Color4<float>::Color4(Color4<float>::ColorConstant cc)
|
||||||
Import(Color4<unsigned char>((Color4<unsigned char>::ColorConstant)cc));
|
Import(Color4<unsigned char>((Color4<unsigned char>::ColorConstant)cc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline Color4<unsigned char>::Color4(unsigned int cc)
|
||||||
|
{
|
||||||
|
*((int *)this )= cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline Color4<float>::Color4(unsigned int cc)
|
||||||
|
{
|
||||||
|
Import(Color4<unsigned char>(cc));
|
||||||
|
}
|
||||||
|
|
||||||
inline Color4<float> Clamp(Color4<float> &c)
|
inline Color4<float> Clamp(Color4<float> &c)
|
||||||
{
|
{
|
||||||
c[0]=math::Clamp(c[0],0.0f,1.0f);
|
c[0]=math::Clamp(c[0],0.0f,1.0f);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue