|
Katana Plug-in APIs 0.1
|
00001 // Copyright (c) 2017 The Foundry Visionmongers Ltd. All Rights Reserved. 00002 00003 #ifndef FNIMATHHELPERS_H_ 00004 #define FNIMATHHELPERS_H_ 00005 00006 #include <FnViewer/plugin/FnMathTypes.h> 00007 #include <FnAttribute/FnAttribute.h> 00008 00009 #include <ImathVec.h> 00010 #include <ImathMatrix.h> 00011 00012 00013 namespace Foundry 00014 { 00015 namespace Katana 00016 { 00017 namespace ViewerUtils 00018 { 00019 00026 static inline IMATH_NAMESPACE::V3d toRadians(const IMATH_NAMESPACE::V3d& vec) 00027 { 00028 return vec * (M_PI / 180.0); 00029 } 00030 00031 static inline IMATH_NAMESPACE::V3d toDegrees(const IMATH_NAMESPACE::V3d& vec) 00032 { 00033 return vec * (180.0 / M_PI); 00034 } 00035 00036 inline IMATH_NAMESPACE::Matrix44<double> toImathMatrix44d(const double* m) 00037 { 00038 return IMATH_NAMESPACE::Matrix44<double>(m[0], m[1], m[2], m[3], m[4], m[5], 00039 m[6], m[7], m[8], m[9], m[10], 00040 m[11], m[12], m[13], m[14], m[15]); 00041 } 00042 00043 inline IMATH_NAMESPACE::Matrix44<double> toImathMatrix44d( 00044 const Foundry::Katana::ViewerAPI::Matrix44d& m) 00045 { 00046 return IMATH_NAMESPACE::Matrix44<double>( 00047 m.data[0], m.data[1], m.data[2], m.data[3], m.data[4], m.data[5], 00048 m.data[6], m.data[7], m.data[8], m.data[9], m.data[10], m.data[11], 00049 m.data[12], m.data[13], m.data[14], m.data[15]); 00050 } 00051 00052 inline IMATH_NAMESPACE::Matrix44<double> toImathMatrix44d( 00053 FnAttribute::DoubleAttribute a) 00054 { 00055 if (!a.isValid()) 00056 { 00057 return IMATH_NAMESPACE::M44d(); 00058 } 00059 00060 FnAttribute::DoubleConstVector m = a.getNearestSample(0); 00061 return IMATH_NAMESPACE::M44d(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], 00062 m[8], m[9], m[10], m[11], m[12], m[13], m[14], 00063 m[15]); 00064 } 00065 00066 inline Foundry::Katana::ViewerAPI::Matrix44d toMatrix44d( 00067 const IMATH_NAMESPACE::Matrix44<double>& m) 00068 { 00069 return Foundry::Katana::ViewerAPI::Matrix44d( 00070 m[0][0], m[0][1], m[0][2], m[0][3], 00071 m[1][0], m[1][1], m[1][2], m[1][3], 00072 m[2][0], m[2][1], m[2][2], m[2][3], 00073 m[3][0], m[3][1], m[3][2], m[3][3]); 00074 } 00075 00076 inline FnAttribute::DoubleAttribute toDoubleAttribute( 00077 const IMATH_NAMESPACE::Matrix44<double>& m) 00078 { 00079 double matrixArray[16] = { 00080 m[0][0], m[0][1], m[0][2], m[0][3], 00081 m[1][0], m[1][1], m[1][2], m[1][3], 00082 m[2][0], m[2][1], m[2][2], m[2][3], 00083 m[3][0], m[3][1], m[3][2], m[3][3] }; 00084 return FnAttribute::DoubleAttribute(matrixArray, 16, 4); 00085 } 00086 00087 inline IMATH_NAMESPACE::V3d toImathV3d( 00088 const Foundry::Katana::ViewerAPI::Vec3d& v) 00089 { 00090 return IMATH_NAMESPACE::V3d(v.x, v.y, v.z); 00091 } 00092 00093 inline Foundry::Katana::ViewerAPI::Vec3d toVec3d(const IMATH_NAMESPACE::V3d& v) 00094 { 00095 return Foundry::Katana::ViewerAPI::Vec3d(v.x, v.y, v.z); 00096 } 00097 00098 inline Foundry::Katana::ViewerAPI::Vec3f toVec3f(const IMATH_NAMESPACE::V3d& v) 00099 { 00100 return Foundry::Katana::ViewerAPI::Vec3f( 00101 static_cast<float>(v.x), 00102 static_cast<float>(v.y), 00103 static_cast<float>(v.z)); 00104 } 00105 00106 inline IMATH_NAMESPACE::V2i toImathV2i( 00107 const Foundry::Katana::ViewerAPI::Vec2i& v) 00108 { 00109 return IMATH_NAMESPACE::V2i(v.x, v.y); 00110 } 00111 00112 inline Foundry::Katana::ViewerAPI::Vec2i toVec2i(const IMATH_NAMESPACE::V2i& v) 00113 { 00114 return Foundry::Katana::ViewerAPI::Vec2i(v.x, v.y); 00115 } 00116 00117 } // ViewerUtils 00118 } // Katana 00119 } // Foundry 00120 00121 #endif // FNIMATHHELPERS_H_
1.7.3