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 NOTE: Not robust; generates invalid triangulations and fails to insert edges sometimes, even if the arrangement has no self-intersections But should always do something that at least covers the point set, if the point set is not degenerate TODO: Make a robust triangulation algo |
|
|
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 |
|
|
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 |