% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/graph_helpers.R
\name{irregular_ball_solid_helpers}
\alias{irregular_ball_solid_helpers}
\alias{irregular.ball.solid.embedding}
\alias{irregular.ball.solid.graph}
\title{Weighted irregular ball solid helpers}
\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{
\item{base}{Base polyhedron. One of \code{"tetrahedron"},
\code{"octahedron"}, or \code{"icosahedron"}.}

\item{level}{Surface subdivision depth used for each radial layer.}

\item{layers}{Number of non-center radial layers.}

\item{outer_radius}{Positive outer radius of the ball.}

\item{radial_irregularity}{Irregularity level for the radial layer spacing.
Must lie in \code{[0, 1]}.}

\item{layer_twist}{Finite z-axis twist applied smoothly across radial
layers.}

\item{surface}{Solid geometry family. One of \code{"standard"},
\code{"bulged"}, \code{"twisted"}, or \code{"wavy"}.}

\item{amplitude}{Finite deformation amplitude.}

\item{freq_theta}{Positive azimuthal modulation frequency used only when
\code{surface = "wavy"}.}

\item{freq_phi}{Positive polar modulation frequency used only when
\code{surface = "wavy"}.}

\item{twist}{Finite twist strength used only when
\code{surface = "twisted"}.}

\item{normalize}{Normalization applied to the induced edge lengths. One of
\code{"median"}, \code{"mean"}, or \code{"none"}.}
}
\value{
\code{irregular.ball.solid.embedding()} returns an \code{n x 3} numeric
matrix with columns \code{x}, \code{y}, and \code{z}.

\code{irregular.ball.solid.graph()} returns a list with components:
\itemize{
  \item \code{edges}: the irregular ball edges,
  \item \code{n}: number of vertices,
  \item \code{edge_weights}: induced positive edge lengths,
  \item \code{coords_surface}: the 3D embedding,
  \item \code{coords_param}: the canonical 3D ball coordinates,
  \item \code{weight_scale}: the normalization constant applied to the raw
    edge lengths,
  \item \code{family}: always \code{"irregular.ball"},
  \item \code{surface}: the chosen solid geometry family,
  \item \code{base}: the chosen base polyhedron,
  \item \code{level}: the surface subdivision depth,
  \item \code{layers}: number of non-center radial layers,
  \item \code{radii}: the radial layer values,
  \item \code{label}: a human-readable family label.
}
}
\description{
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.
}
