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
meshcrossfield.h File Reference
#include <QPointF>
#include <QRectF>
#include <QVector>
Include dependency graph for meshcrossfield.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  mesh::CrossField
 
struct  mesh::CrossField::Options
 

Namespaces

namespace  mesh
 

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

Boundary-aligned 2D cross field on a regular grid (workplans/QUAD_MESHING_REDESIGN_PLAN_2026-09-06.md §4.4b).

A cross (4-RoSy) at angle θ is represented by u = (cos 4θ, sin 4θ), which is invariant under θ → θ + 90°. The field is the discrete harmonic interpolant of Dirichlet data laid along "aligned polylines" (the region ring, interior constraint segments, an optional guide): every grid cell a polyline passes through is pinned to that segment's tangent; every other cell of the bounding-box grid is an unknown solved by SOR on the 5-point Laplacian. No inside/outside mask is needed — exterior cells simply carry harmless values. No third-party solver (plan D2/D9).

Query: bilinear interpolation of u, then θ = atan2(u_y, u_x) / 4 folded to [0, π/2). Where |u| collapses (a singularity) θ is still returned — callers accept the resulting irregular lattice there.