00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020 #ifndef SHUTIL_FUNCIMPL_HPP
00021 #define SHUTIL_FUNCIMPL_HPP
00022
00023 #include <cmath>
00024 #include <numeric>
00025 #include "sh/ShAttrib.hpp"
00026 #include "sh/ShSwizzle.hpp"
00027 #include "sh/ShVariable.hpp"
00028 #include "sh/ShLib.hpp"
00029 #include "ShFunc.hpp"
00030
00031 namespace ShUtil {
00032
00033 using namespace SH;
00034
00038 template<typename T>
00039 ShGeneric<3, T> changeBasis(const ShGeneric<3, T> &b0, const ShGeneric<3, T> &b1,
00040 const ShGeneric<3, T> &b2, const ShGeneric<3, T> &v)
00041 {
00042 ShAttrib<3, SH_TEMP, T> result;
00043 result(0) = b0 | v;
00044 result(1) = b1 | v;
00045 result(2) = b2 | v;
00046 return result;
00047 }
00048
00049 }
00050
00051 #endif // SHUTIL_FUNCIMPL_HPP