#include <poly_Jacobian.h>
Static Public Member Functions | |
static mobiusPoly_EXPORT bool | Compute (const t_xyz &P0, const t_xyz &P1, const t_xyz &P2, const int zeroBasedNodeId, t_uv &p0, t_uv &p1, t_uv &p2, double J[][2], double &J_det, double &J_det_normalized) |
Utility to analyze Jacobians of mesh elements. See
[Shivanna et al (2010). An Analytical Framework for Quadrilateral Surface Mesh Improvement with an Underlying Triangulated Surface Definition. International Meshing Roundtable, 335-350.] [Stimpson et al (2007). The Verdict Geometric Quality Library, Ch. 4.9]
According to [Shivanna et al. 2010], the Jacobian of a triangle in 3D/physical space is a 3x2 matrix and that of a triangle in 2D/computational/parametric space is a 2x2 matrix. To calculate the quality metric of a triangle in 3D, the triangle is rigidly transformed so that all the nodes lie in a 2D plane. This transformation does not change the quality metric, as the determinant and the condition number of the Jacobian are orientation invariant.
|
static |
Computes scaled Jacobian
[in] | P0 | the 0-th vertex coordinates. |
[in] | P1 | the 1-st vertex coordinates. |
[in] | P2 | the 2-nd vertex coordinates. |
[in] | zeroBasedNodeId | the 0-based ID of the node where to compute the Jacobian matrix. |
[out] | p0 | the P0 mapped to 2D. |
[out] | p1 | the P1 mapped to 2D. |
[out] | p2 | the P2 mapped to 2D. |
[out] | J | the resulting Jacobian matrix 2x2. |
[out] | J_det | the determinant of the Jacobian matrix. |
[out] | J_det_normalized | the normalized determinant. |