QUAOAR STUDIO // Mobius API
mobius::poly_Jacobian Class Reference

#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)
 

Detailed Description

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.

Member Function Documentation

◆ Compute()

static mobiusPoly_EXPORT bool mobius::poly_Jacobian::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 
)
static

Computes scaled Jacobian

Parameters
[in]P0the 0-th vertex coordinates.
[in]P1the 1-st vertex coordinates.
[in]P2the 2-nd vertex coordinates.
[in]zeroBasedNodeIdthe 0-based ID of the node where to compute the Jacobian matrix.
[out]p0the P0 mapped to 2D.
[out]p1the P1 mapped to 2D.
[out]p2the P2 mapped to 2D.
[out]Jthe resulting Jacobian matrix 2x2.
[out]J_detthe determinant of the Jacobian matrix.
[out]J_det_normalizedthe normalized determinant.
Returns
true in case of success, false – otherwise.

The documentation for this class was generated from the following file: