Convenience helpers that triangulate a planar pair-of-pants domain by clipping a regular triangular lattice to a disk with two interior circular holes. The resulting graph is a triangulated surface with three boundary components and a deterministic non-grid topology.
triangulated.pair.of.pants.surface.embedding(
resolution = 12,
outer_radius = 1.1,
hole_radius = 0.24,
hole_offset = 0.38,
hole_height = 0.18,
surface = c("flat", "saddle", "paraboloid", "ripple", "folded"),
amplitude = 0.6,
freq_u = 1,
freq_v = 1
)triangulated.pair.of.pants.surface.graph(
resolution = 12,
outer_radius = 1.1,
hole_radius = 0.24,
hole_offset = 0.38,
hole_height = 0.18,
surface = c("flat", "saddle", "paraboloid", "ripple", "folded"),
amplitude = 0.6,
freq_u = 1,
freq_v = 1,
normalize = c("median", "mean", "none")
)
triangulated.pair.of.pants.surface.embedding() returns an n x
3 numeric matrix with columns x, y, and z.
triangulated.pair.of.pants.surface.graph() returns a list with
components:
edges: the triangulated pair-of-pants edges,
n: number of vertices,
edge_weights: induced positive edge lengths,
coords_surface: the 3D embedding,
coords_param: the canonical 2D pair-of-pants coordinates,
weight_scale: the normalization constant applied to the raw
edge lengths,
family: always "triangulated.pair.of.pants",
surface: the chosen surface name,
resolution: the lattice-resolution parameter,
label: a human-readable family label.
Positive lattice-resolution control. Larger values produce finer triangulations.
Positive radius of the outer boundary.
Positive radius of each interior hole.
Positive horizontal offset of the two hole centers from the vertical axis.
Vertical coordinate shared by the two hole centers.
Geometry family used for the 3D lift. One of "flat",
"saddle", "paraboloid", "ripple", or
"folded".
Finite deformation amplitude.
Positive ripple frequency in the first planar coordinate. Used
only when surface = "ripple".
Positive ripple frequency in the second planar coordinate. Used
only when surface = "ripple".
Normalization applied to the induced edge lengths. One of
"median", "mean", or "none".
triangulated.pair.of.pants.surface.embedding() returns the 3D
coordinates of the clipped lattice vertices in the same vertex order as
edges.triangulated.pair.of.pants().
triangulated.pair.of.pants.surface.graph() returns a reusable
weighted-graph bundle with the pair-of-pants edges, induced edge weights, 3D
embedding, and the 2D parameter coordinates of the clipped domain.