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.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

The coords_surface component is 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

The coords.surface component is the 3D coordinates of the clipped lattice vertices in the same vertex order as edges. 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.

Examples

pair_of_pants <- triangulated.pair.of.pants.surface.graph(resolution = 8)