Skip to contents

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.

Usage

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")
)

Arguments

resolution

Positive lattice-resolution control. Larger values produce finer triangulations.

outer_radius

Positive radius of the outer boundary.

hole_radius

Positive radius of each interior hole.

hole_offset

Positive horizontal offset of the two hole centers from the vertical axis.

hole_height

Vertical coordinate shared by the two hole centers.

surface

Geometry family used for the 3D lift. One of "flat", "saddle", "paraboloid", "ripple", or "folded".

amplitude

Finite deformation amplitude.

freq_u

Positive ripple frequency in the first planar coordinate. Used only when surface = "ripple".

freq_v

Positive ripple frequency in the second planar coordinate. Used only when surface = "ripple".

normalize

Normalization applied to the induced edge lengths. One of "median", "mean", or "none".

Value

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.

Details

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.