% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/core.R
\name{explode_sf_core}
\alias{explode_sf_core}
\title{Core displacement algorithm (Algorithm 1 from the paper)}
\usage{
explode_sf_core(
  sf_obj,
  region_col,
  alpha_r,
  alpha_l,
  p = 1.25,
  centroid_fun = c("centroid", "point_on_surface")
)
}
\arguments{
\item{sf_obj}{Projected sf object with region column}

\item{region_col}{Grouping column name}

\item{alpha_r}{Regional separation magnitude (metres)}

\item{alpha_l}{Local expansion magnitude (metres)}

\item{p}{Distance scaling exponent (default 1.25)}

\item{centroid_fun}{"centroid" (default) or "point_on_surface"}
}
\value{
Exploded sf object (same CRS as input)
}
\description{
Applies the hierarchical centroid-driven displacement field to every polygon.
Each unit receives rigid-body translation t_i = alpha_r * dhat_state + alpha_l * s_i * dhat_local.
}
\details{
Propositions 1-3 guarantee: exact geometry preservation, radial ordering, and
bounded displacement (||t_i|| <= alpha_r + alpha_l).
}
\keyword{internal}
