Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CRVBEZIERSHAPES_H
00009 #define CRVBEZIERSHAPES_H
00010
00014 namespace crv {
00015
00018 void BlendedTriangleGetValues(apf::Mesh* m, apf::MeshEntity* e,
00019 apf::Vector3 const& xi, apf::NewArray<double>& values);
00020 void BlendedTriangleGetLocalGradients(apf::Mesh* m, apf::MeshEntity* e,
00021 apf::Vector3 const& xi, apf::NewArray<apf::Vector3>& grads);
00022 void BlendedTetGetValues(apf::Mesh* m, apf::MeshEntity* e,
00023 apf::Vector3 const& xi, apf::NewArray<double>& values);
00024 void BlendedTetGetLocalGradients(apf::Mesh* m, apf::MeshEntity* e,
00025 apf::Vector3 const& xi, apf::NewArray<apf::Vector3>& grads);
00026
00028 typedef void (*bezierShape)(int P,
00029 apf::Vector3 const& xi,
00030 apf::NewArray<double>& values);
00031
00033 typedef void (*bezierShapeGrads)(int P,
00034 apf::Vector3 const& xi,
00035 apf::NewArray<apf::Vector3>& grads);
00036
00038 extern const bezierShape bezier[apf::Mesh::TYPES];
00040 extern const bezierShapeGrads bezierGrads[apf::Mesh::TYPES];
00041
00046 void getBezierTransformationMatrix(int type, int P,
00047 mth::Matrix<double>& A,
00048 const apf::Vector3 *range);
00054 void getBezierTransformationMatrix(int parentType,
00055 int childType, int P,
00056 mth::Matrix<double>& A,
00057 const apf::Vector3* childRange);
00058
00059 }
00060
00061 #endif