Convenience helpers that build a pair-of-pants domain from deterministically irregular horizontal slices, sample each surviving slice interval with varying point counts, and stitch adjacent slices into a locally triangulated surface-with-boundary graph. The resulting irregular planar parameterization can then be lifted into \(\mathbb{R}^3\) using the same planar surface families as the triangulated annulus and irregular annulus helpers.
irregular.pair.of.pants.surface.embedding(
slices = 11,
outer_count = 28,
outer_radius = 1.1,
hole_radius = 0.24,
hole_offset = 0.38,
hole_height = 0.18,
count_irregularity = 0.2,
vertical_irregularity = 0.35,
phase_twist = 0.35,
surface = c("flat", "saddle", "paraboloid", "ripple", "folded"),
amplitude = 0.6,
freq_u = 1,
freq_v = 1
)irregular.pair.of.pants.surface.graph(
slices = 11,
outer_count = 28,
outer_radius = 1.1,
hole_radius = 0.24,
hole_offset = 0.38,
hole_height = 0.18,
count_irregularity = 0.2,
vertical_irregularity = 0.35,
phase_twist = 0.35,
surface = c("flat", "saddle", "paraboloid", "ripple", "folded"),
amplitude = 0.6,
freq_u = 1,
freq_v = 1,
normalize = c("median", "mean", "none")
)
irregular.pair.of.pants.surface.embedding() returns an n x 3
numeric matrix with columns x, y, and z.
irregular.pair.of.pants.surface.graph() returns a list with
components:
edges: the irregular pair-of-pants edges,
n: number of vertices,
edge_weights: induced positive edge lengths,
coords_surface: the 3D embedding,
coords_param: the irregular planar pair-of-pants coordinates,
weight_scale: the normalization constant applied to the raw
edge lengths,
family: always "irregular.pair.of.pants",
surface: the chosen surface name,
slices: number of horizontal sample slices,
slice_sizes: vertex counts in each slice,
slice_components: number of connected slice intervals in each
slice,
label: a human-readable family label.
Number of horizontal sample slices through the pair-of-pants domain.
Approximate number of vertices across the widest slices.
Positive outer boundary radius.
Positive radius of each interior hole.
Positive horizontal offset of the two hole centers.
Shared vertical coordinate of the two hole centers.
Irregularity level for the per-slice sample counts.
Must lie in [0, 1).
Irregularity level for slice spacing. Must lie
in [0, 1].
Finite phase offset used to desynchronize neighboring slice samples.
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".