25#ifndef MESHKIT_NATIVE_MESHQUADREGION_HPP
26#define MESHKIT_NATIVE_MESHQUADREGION_HPP
89 if (
region.aspectMax >= 0.0)
203 const Vector<Polygon> &holes);
249 double cornerTolDeg = 25.0,
double rectilinearTolDeg = 2.0);
Definition geometry.hpp:59
Definition geometry.hpp:11
Definition storage.hpp:18
Definition planmodel.hpp:49
Definition planmodel.hpp:14
size_t i
Definition contourjob.cpp:30
QString path
Populated by the worker only after its own successful atomic creation.
Definition extensiontimeseriesaccess.cpp:32
int region
Definition job.cpp:19
ArrowPlacement p
Definition linesymbollayer.cpp:29
int h
Definition mesh2dresultsexport.cpp:477
QuadRegionMode classifyQuadRegion(const Polygon &ring, Vector< int > *corners, double cornerTolDeg=25.0, double rectilinearTolDeg=2.0)
Heuristically classify normalized ring turns as Mapped, Submapped or Free.
Definition regions.cpp:493
bool ringIsSimple(const Polygon &ring)
Reject proper nonadjacent edge crossings using plain double orientation signs.
Definition regions.cpp:335
double ringTurnDeg(const Polygon &ring, int i)
Compute a signed exterior turn at one ring corner using adjacent edge cross/dot products.
Definition regions.cpp:352
QuadRegionMode
Definition regions.hpp:31
@ Auto
classifyQuadRegion() decides: Mapped → Submapped → Free.
@ Mapped
Four logical sides (polylines) → transfinite quads. Needs 4 corners.
@ Submapped
Exactly rectilinear ring → grid-based structured quads.
@ Free
Cross-field aligned lattice + template pairing (quad-dominant).
@ TrianglesOnly
Region ring is still a constraint loop, interior stays triangles.
bool pointInRing(const Polygon &ring, const Point2 &p)
Test a point using a strict horizontal-ray odd-even crossing rule.
Definition regions.cpp:318
Polygon normalizeRingCCW(const Polygon &ring)
Copy a ring while dropping scale-fuzzy consecutive/closing duplicates and reversing negative area.
Definition regions.cpp:259
bool pointInRegion(const Polygon &ring, const Vector< Polygon > &holes, const Point2 &p)
Combine outer-ring parity with exclusion by every supplied hole-ring parity.
Definition regions.cpp:308
Text validateQuadRegionsDisjoint(const Vector< QuadRegion > ®ions)
Check explicit region pairs for proper crossings or strictly interior sampled vertices.
Definition regions.cpp:449
double ringSignedArea(const Polygon &ring)
Compute oriented shoelace area after translating corners to the first vertex.
Definition regions.cpp:247
Polygon resampleRing(const Polygon &ring, double h, double keepTurnDeg=0.0)
Normalize a ring and insert equal-part subdivisions along all implicit closing edges.
Definition regions.cpp:538
bool polylineIntersectsRect(const Vector< Point2 > &path, const Box2 &rect)
Test whether any consecutive path segment meets a normalized closed rectangle.
Definition regions.cpp:280
QuadQualityBounds quadRegionQualityBounds(const QuadRegion ®ion, QuadQualityBounds global)
Copy global quality bounds and apply an explicitly nonnegative region aspect override.
Definition regions.hpp:87
Text validateQuadRegion(const QuadRegion &r, const Vector< Polygon > &domains, const Vector< Polygon > &holes)
Check region authoring policy, normalized ring and sampled domain/hole containment.
Definition regions.cpp:367
const Polygon & ring
Definition patch.cpp:164
Acceptance bounds shared by pairing, cleanup, smoothing and the legacy tri-pair merge....
Definition quadquality.hpp:35
double maxAspect
longest / shortest side (opposite-side means). <= 0 = unbounded.
Definition quadquality.hpp:39
Definition regions.hpp:39
bool hasAlignAngle
Free: constant cross field at alignAngleDeg (from +x, CCW).
Definition regions.hpp:67
Text tag
MeshTriangle::tag for every cell inside; empty = inherit region marker's.
Definition regions.hpp:71
double hAcross
Positive spacings in mesh CRS units, used only when directionalSpacing.
Definition regions.hpp:61
std::int32_t attribute
Definition regions.hpp:40
double alignAngleDeg
Definition regions.hpp:68
double mappedAlongAngleDeg
Physical undirected along-axis, degrees from +x CCW; independent of ring start.
Definition regions.hpp:63
double aspectMax
Free: opposite-side mean ratio cap; < 0 inherits global, 0 unbounded, >= 1 explicit.
Definition regions.hpp:65
QuadRegionMode mode
Definition regions.hpp:54
bool automaticCandidate
Derived candidate; no outline constraint on fallback.
Definition regions.hpp:56
Vector< int > corners
Mapped: 4 ring vertex indices in ring order; empty = auto-pick.
Definition regions.hpp:70
bool isBackground
Definition regions.hpp:53
bool requireMapped
Explicit hard requirement, used by unified planning.
Definition regions.hpp:55
Vector< Polygon > holes
Definition regions.hpp:46
Polygon ring
Closed (last == first optional), simple, any orientation.
Definition regions.hpp:41
double spacing
Target quad edge length h; 0 = derive from the size field / max area.
Definition regions.hpp:57
bool directionalSpacing
Explicit Mapped spacing; failure must not fall back to isotropic cells.
Definition regions.hpp:58
Vector< Point2 > alignGuide
Free: optional polyline the field aligns to (streets, channels).
Definition regions.hpp:69
double hAlong
Definition regions.hpp:60