diff --git a/vcg/simplex/vertexplus/component_sph.h b/vcg/simplex/vertexplus/component_sph.h new file mode 100644 index 00000000..571b4581 --- /dev/null +++ b/vcg/simplex/vertexplus/component_sph.h @@ -0,0 +1,58 @@ +#ifndef COMPONENT_SPH_ +#define COMPONENT_SPH_ + +#include "spherical_harmonics.h" + +namespace vcg { +namespace vertex { + +template class Sph: public T +{ +public: + typedef A SphType; + SphType &SH() { return _harmonics; } + const SphType &cSH() const { return _harmonics; } + template < class LeftV> + void ImportLocal(const LeftV & left ) { SH() = left.cSH(); T::ImportLocal( left); } + static bool HasSH() { return true; } + static void Name(std::vector & name){name.push_back(std::string("Spherical Harmonics"));T::Name(name);} + +private: + SphType _harmonics; +}; + +template class Sph9f: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph9f"));T::Name(name);} +}; + +template class Sph16f: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph16f"));T::Name(name);} +}; + +template class Sph25f: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph25f"));T::Name(name);} +}; + +template class Sph36f: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph36f"));T::Name(name);} +}; + +template class Sph9d: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph9d"));T::Name(name);} +}; + +template class Sph16d: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph16d"));T::Name(name);} +}; + +template class Sph25d: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph25d"));T::Name(name);} +}; + +template class Sph36d: public Sph, T> { + public: static void Name(std::vector & name){name.push_back(std::string("Sph36d"));T::Name(name);} +}; + +}} + +#endif /*COMPONENT_H_*/