From e8a231d2a815a433eef3161b2a192d304584f5a4 Mon Sep 17 00:00:00 2001 From: Amaury Johnan <amjohnen@gmail.com> Date: Sat, 29 Jun 2013 00:08:57 +0000 Subject: [PATCH] --- Numeric/JacobianBasis.h | 2 +- Numeric/bezierBasis.cpp | 8 ++++++++ Plugin/AnalyseCurvedMesh.cpp | 2 +- Plugin/AnalyseCurvedMesh.h | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Numeric/JacobianBasis.h b/Numeric/JacobianBasis.h index 5aa77258dc..31890fc5f0 100644 --- a/Numeric/JacobianBasis.h +++ b/Numeric/JacobianBasis.h @@ -62,7 +62,7 @@ class JacobianBasis { inline void primJac2Jac(const fullVector<double> &primJac, fullVector<double> &jac) const { matrixPrimJac2Jac.mult(primJac,jac); } - inline void subDivisor(const fullVector<double> &bez, fullVector<double> &result) const { + inline void subdivideBezierCoeff(const fullVector<double> &bez, fullVector<double> &result) const { bezier->subDivisor.mult(bez,result); } diff --git a/Numeric/bezierBasis.cpp b/Numeric/bezierBasis.cpp index cf2d14c8e4..c7ea74ce3c 100644 --- a/Numeric/bezierBasis.cpp +++ b/Numeric/bezierBasis.cpp @@ -287,6 +287,14 @@ static std::vector< fullMatrix<double> > generateSubPointsPyr(int order) prox.add(.5); for (int i = 0; i < 8; ++i) { + if (i == 0) { + for (int j = 0; j < nPts; ++j) { + const double factor = (1. - 2*subPoints[i](j, 2)); + subPoints[i](j, 0) = subPoints[i](j, 0) * factor; + subPoints[i](j, 1) = subPoints[i](j, 1) * factor; + } + continue; + } for (int j = 0; j < nPts; ++j) { const double factor = (1. - subPoints[i](j, 2)); subPoints[i](j, 0) = subPoints[i](j, 0) * factor; diff --git a/Plugin/AnalyseCurvedMesh.cpp b/Plugin/AnalyseCurvedMesh.cpp index 182e76d5da..58f3d04685 100644 --- a/Plugin/AnalyseCurvedMesh.cpp +++ b/Plugin/AnalyseCurvedMesh.cpp @@ -336,7 +336,7 @@ int GMSH_AnalyseCurvedMeshPlugin::subDivision(const JacobianBasis *jb, int depth) { fullVector<double> newJacobian(jb->getNumSubNodes()); - jb->subDivisor(jacobian, newJacobian); + jb->subdivideBezierCoeff(jacobian, newJacobian); for (int i = 0; i < jb->getNumDivisions(); i++) for (int j = 0; j < jb->getNumLagCoeff(); j++) diff --git a/Plugin/AnalyseCurvedMesh.h b/Plugin/AnalyseCurvedMesh.h index 5f8ed13125..46c4d0d3a7 100644 --- a/Plugin/AnalyseCurvedMesh.h +++ b/Plugin/AnalyseCurvedMesh.h @@ -72,7 +72,7 @@ private: public: BezierJacobian(fullVector<double> &, const JacobianBasis *, int depth); void subDivisions(fullVector<double> &vect) const - {_jfs->subDivisor(_jacBez, vect);} + {_jfs->subdivideBezierCoeff(_jacBez, vect);} inline int depth() const {return _depthSub;} inline double minJ() const {return _minJ;} -- GitLab