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

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

Examples

ball <- irregular.ball.solid.graph(
  base = "tetrahedron", level = 0, layers = 2
)