Skip to contents

Convenience helpers that build a layered simplicial ball by taking a subdivided triangulated polyhedron, normalizing its vertices to directions on the sphere, placing those directions on nested radial layers, and connecting adjacent layers by a deterministic prism-to-tetrahedra edge pattern. The center vertex is included explicitly, so the resulting graph is genuinely volumetric rather than just a closed surface.

Usage

irregular.ball.solid.embedding(
  base = c("tetrahedron", "octahedron", "icosahedron"),
  level = 1,
  layers = 3,
  outer_radius = 1,
  radial_irregularity = 0.25,
  layer_twist = 0.35,
  surface = c("standard", "bulged", "twisted", "wavy"),
  amplitude = 0.2,
  freq_theta = 2,
  freq_phi = 2,
  twist = 0.6
)

irregular.ball.solid.graph(
  base = c("tetrahedron", "octahedron", "icosahedron"),
  level = 1,
  layers = 3,
  outer_radius = 1,
  radial_irregularity = 0.25,
  layer_twist = 0.35,
  surface = c("standard", "bulged", "twisted", "wavy"),
  amplitude = 0.2,
  freq_theta = 2,
  freq_phi = 2,
  twist = 0.6,
  normalize = c("median", "mean", "none")
)

Arguments

base

Base polyhedron. One of "tetrahedron", "octahedron", or "icosahedron".

level

Surface subdivision depth used for each radial layer.

layers

Number of non-center radial layers.

outer_radius

Positive outer radius of the ball.

radial_irregularity

Irregularity level for the radial layer spacing. Must lie in [0, 1].

layer_twist

Finite z-axis twist applied smoothly across radial layers.

surface

Solid geometry family. One of "standard", "bulged", "twisted", or "wavy".

amplitude

Finite deformation amplitude.

freq_theta

Positive azimuthal modulation frequency used only when surface = "wavy".

freq_phi

Positive polar modulation frequency used only when surface = "wavy".

twist

Finite twist strength used only when surface = "twisted".

normalize

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

Value

irregular.ball.solid.embedding() returns an n x 3 numeric matrix with columns x, y, and z.

irregular.ball.solid.graph() returns a list with components:

  • edges: the irregular ball edges,

  • n: number of vertices,

  • edge_weights: induced positive edge lengths,

  • coords_surface: the 3D embedding,

  • coords_param: the canonical 3D ball coordinates,

  • weight_scale: the normalization constant applied to the raw edge lengths,

  • family: always "irregular.ball",

  • surface: the chosen solid geometry family,

  • base: the chosen base polyhedron,

  • level: the surface subdivision depth,

  • layers: number of non-center radial layers,

  • radii: the radial layer values,

  • label: a human-readable family label.