Module |
|
Header |
/Engine/Plugins/Experimental/GeometryProcessing/Source/GeometryAlgorithms/Public/Arrangement2d.h |
Include |
#include "Arrangement2d.h" |
struct FArrangement2d
Arrangement2d constructs a planar arrangement of a set of 2D line segments. When a segment is inserted, existing edges are split, and the inserted segment becomes multiple graph edges. So, the resulting FDynamicGraph2d should not have any edges that intersect.
Calculations are performed in double-precision, so there is no guarantee of correctness.
[TODO] multi-level segment has to accelerate find_intersecting_edges() [TODO] maybe smarter handling
Name | Description | |
---|---|---|
|
FArrangement2d ( |
|
|
FArrangement2d ( |
Name | Description | ||
---|---|---|---|
|
AttemptTriangulate ( |
Attempts to triangulates the arrangement with a constrained delaunay triangulation |
|
|
int |
find_existing_vertex ( |
Find existing vertex at point, if it exists |
|
find_intersecting_edges ( |
Find set of edges in graph that intersect with edge [A,B] |
|
|
find_intersecting_floating_vertices ( |
||
|
int |
find_nearest_boundary_vertex ( |
Find nearest boundary vertex, within SearchRadius |
|
int |
find_nearest_vertex ( |
Find closest vertex, within SearchRadius |
|
HasSelfIntersections() |
Check if current Graph has self-intersections; not optimized, only for debugging |
|
|
HasVertexNear ( |
Check if vertex exists in region |
|
|
Insert ( |
Insert segment into the arrangement |
|
|
int |
Insert ( |
Insert isolated point P into the arrangement |
|
Insert |
Insert segment [A,B] into the arrangement |
|
|
*void |
Insert ( |
Int N = pline.VertexCount - 1; for (int i = 0; i < N; ++i) { FVector2d A = pline[i]; FVector2d B = pline[i + 1]; insert_segment(A, B, GID); } |
|
int |
insert_point ( |
Insert pt P into the arrangement, splitting existing edges as necessary |
|
insert_segment |
Insert edge [A,B] into the arrangement, splitting existing edges as necessary |
|
|
InsertNewIsolatedPointUnsafe ( |
Insert isolated point P into the arrangement when you know by construction it's not too close to any vertex or edge Much faster, but will break things if you use it to insert a point that is on top of any existing element! |
|
|
split_segment_at_t ( |
Insert new point into segment EID at parameter value T If T is within Tol of endpoint of segment, we use that instead. |
|
|
SplitEdgeAtPoint ( |
Subdivide edge at a given position |
Name |
Description |
|
---|---|---|
|
FIntersection |