SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
meshquadquality.h File Reference
#include "mesh/meshresult.h"
#include <QPointF>
#include <QVector>
#include <algorithm>
#include <cmath>
#include <limits>
Include dependency graph for meshquadquality.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mesh::QuadQualityBounds
 Acceptance bounds shared by pairing, cleanup, smoothing and the legacy tri-pair merge. Defaults are the plan's (§5): hard 60°/120°, SJ ≥ 0.866, aspect ≤ 2. More...
 
struct  mesh::QuadQuality
 

Namespaces

namespace  mesh
 

Functions

QuadQuality mesh::quadQuality (const QPointF &a, const QPointF &b, const QPointF &c, const QPointF &d)
 Metrics for corners a,b,c,d in cyclic order.
 
QuadQuality mesh::quadQuality (const QVector< MeshVertex > &vertices, const MeshTriangle &t)
 Metrics for a quad cell of mesh (t.v3 >= 0 required).
 
bool mesh::quadAcceptable (const QuadQuality &q, const QuadQualityBounds &b)
 Hard acceptance test (convex + angle bounds + SJ floor + aspect cap).
 
double mesh::quadScore (const QuadQuality &q, const QuadQualityBounds &b)
 Combined score in [0,1] (plan §5): SJ · min(1, aspectMax/aspect) · sqrt(1 - skew). 0 for a non-convex quad. Used as the pairing benefit and the smoothing objective.
 
double mesh::triangleScaledJacobian (const QPointF &a, const QPointF &b, const QPointF &c)
 Minimum sine of a triangle's angles (1 is unattainable; equilateral = 0.866; right isosceles = 0.707). Used by the smoothing guard for the triangles that remain inside a quad region.
 
double mesh::cellCornerAngleDeg (const QVector< MeshVertex > &v, const MeshTriangle &t, int i)
 Interior angle at corner i of a cell (degrees), triangles and quads.
 

Detailed Description

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Date
2026
License\n GPL-3.0-or-later

Quadrilateral quality metrics (workplans/QUAD_MESHING_REDESIGN_PLAN_2026-09-06.md §5).

Header-only. Every function takes the four corners in cyclic order (CCW or CW — angles are unsigned). "Scaled Jacobian" is Knupp's algebraic metric: at each corner, the sine of the interior angle; the quad's value is the minimum over the four corners (1 for a rectangle, 0.866 at 60°/120°, 0 when a corner degenerates, negative when the quad folds).